为了账号安全,请及时绑定邮箱和手机立即绑定

从集合中获取元素,具体取决于元素的类型

从集合中获取元素,具体取决于元素的类型

犯罪嫌疑人X 2021-04-06 10:15:48
我有最多3个相同对象的元素的未分类集合。这些元素的属性类型可以是A,B或C。我想基于类型A优先于B,优先于C的条件从该集合中获取1个元素。例如。{B,A,C}-> A{B,C}-> B{B}-> B{B,A}-> A{A,B}-> A最快或最有效的方法是什么?我必须对数千个集合执行此操作。我正在使用Java,因此可以使用任何类型的集合。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您可以一次迭代来完成列表,而无需遍历列表3次。这是一些伪代码:


Element best = list.get(0);

for (int i = 1; i < list.size(); i++) {

    Element cur = list.get(i);

    if (cur.isA() || (cur.isB() && best.isC())) {

        best = cur;

    }

}

// best will have property A if possible, then property B if possible, then C.

更准确地说,这将找到具有属性A的最后一个元素(如果存在),否则找到具有属性B的第一个元素(如果存在),否则找到第一个元素。如果用例需要,则可以调整if语句逻辑,以使这些规则更加一致。


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信