根据元素类型从集合中获取元素

时间:2018-06-22 15:50:42

标签: java algorithm collections

我有最多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 个答案:

答案 0 :(得分:1)

您可以一次迭代一次,而无需遍历列表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语句逻辑,以使这些规则更加一致。