我有两个ArrayList都包含整数值。我的目标是获得比较这两个列表的相同/共同/重复值。换句话说(用 SQL 的说法),我需要两个列表的INTERSECT结果,即出现在两个列表中的值。
例子:
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(100);
list1.add(200);
list1.add(300);
list1.add(400);
list1.add(500);
ArrayList<Integer> list2 = new ArrayList<Integer>();
list2.add(300);
list2.add(600);
我可以想到的一种实现/解决方案是循环列表中的一个,例如:
ArrayList<Integer> intersectList = new ArrayList<Integer>();
for (Integer intValue : list1)
{
if(list2.contains(intValue))
intersectList.add(intValue);
}
在这种情况下,intersectList
将只包含 1 个要添加的整数项,即300
,它同时出现在两个列表中。
我的问题是,有没有更好/最快/有效的方法来实现这个逻辑?Apache Commons库中有任何可用的选项吗?任何其他想法/建议/意见表示赞赏。
注意:出于说明目的,我在这里只显示了 5 个项目和 2 个项目被添加到列表中。在我的实时实现中,每个列表中会有超过 1000 个元素。因此,性能也是一个需要考虑的关键因素。