我有最多 3 个相同对象元素的未排序集合。这些元素的属性类型可以是 A、B 或 C。
我想根据类型 A 优先于 B 的条件从该集合中获取 1 个元素,B 优先于 C。
例如。
- {B, A, C} -> A
- {B, C} -> B
- {B} -> B
- {B, A} -> A
- {A, B} -> A
什么是最快或最有效的方法来做到这一点。我必须对数千个集合执行此操作。
我正在使用 java,所以我可以使用任何类型的集合。
我有最多 3 个相同对象元素的未排序集合。这些元素的属性类型可以是 A、B 或 C。
我想根据类型 A 优先于 B 的条件从该集合中获取 1 个元素,B 优先于 C。
例如。
什么是最快或最有效的方法来做到这一点。我必须对数千个集合执行此操作。
我正在使用 java,所以我可以使用任何类型的集合。
您可以在一次迭代中完成,而不是遍历列表 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 语句逻辑以使这些规则更加一致。