我正在寻找一种智能且快速的方法来仅获取所有其他数组列表中的多个数组列表(存储在哈希图中)的值。
例如 [a] = 1, 2, 3, 4, 5 [b] = 1, 3 [c] = 3
结果 = 3
在 Java 中实现这一目标的最快方法是什么?
我正在寻找一种智能且快速的方法来仅获取所有其他数组列表中的多个数组列表(存储在哈希图中)的值。
例如 [a] = 1, 2, 3, 4, 5 [b] = 1, 3 [c] = 3
结果 = 3
在 Java 中实现这一目标的最快方法是什么?
您可以使用ArrayLists来使用Collections.retainAll :
list1.retainAll(list2);
list1.retainAll(list3);
但请记住,您将更改list1
.
在谷歌番石榴中:
// assuming you have List<List<?>> lists that is non-empty
Set<?> result = Sets.newLinkedHashSet(lists.get(0));
for (int i = 1; i < lists.size(); i++) {
result.retainAll(ImmutableSet.copyOf(lists.get(i)));
}
return result;
遍历它们,并将任何相同的添加到新的数组列表中。
List commons = new ArrayList();
for(int i=0; i < list1.size() && i < list2.size(); i++) {
Object list1val = list1.get(i);
Object list2val = list2.get(i);
if((list1val == null && list2val == null) ||
(list1val != null && list1val.equals(list2val)))
commons.add(list1val);
}
}