我正在努力寻找解决以下问题的方法。我有 4 个不同的 ArrayList 从数据库中获取它们的值。它们的大小可以从 0(包括)到任何时候。每个列表也可能具有不同的大小和值。我想要有效地做的是:比较所有非 0 大小的列表并检查它们是否有一些共同的整数以及这些值是什么。
有任何想法吗?谢谢!
如果您需要所有公共整数的集合,不包括空整数:
List<List<Integer>> lists = ...
Collection<Integer> common = new HashSet<Integer>(lists.get(0));
for (int i = 1; i < lists.size(); i++) {
if (!lists.get(i).isEmpty())
common.retainAll(lists.get(i));
}
最后,common
将包含对所有这些都通用的整数。
您可能想要使用 apache commonsCollectionUtils.intersection()
来获取两个集合的交集......
迭代地生成交集,如果完成后它不为空 - 你有一个公共元素,它就在这个结果集合中。
关于空列表:只需检查它size()
是否为 0,如果是 - 跳过此列表。
您可以对 ArrayList 对象使用集合交集操作。
像这样的东西:
List<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
l1.add(2);
l1.add(3);
List<Integer> l2= new ArrayList<Integer>();
l2.add(4);
l2.add(2);
l2.add(3);
List<Integer> l3 = new ArrayList<Integer>(l2);
l3.retainAll(l1);
现在,l3 应该只有 l1 和 l2 之间的共同元素。
你可以这样做。如果要搜索多个元素,请将搜索置于循环中。
列出 aList = new ArrayList(); aList.add(新整数(1));
if(aList !=null && !aList.isEmpty()) { if(aList.contains(1)) { System.out.println("知道了"); } }