我目前正在编写一个根据元素对数组进行分组的代码,我希望你能用你的智慧帮助我。
我给出了以下数组:
List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C", "F", "I"));
List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D", "E", "F"));
List<String> list3 = new ArrayList<String>(Arrays.asList("J", "K", "B", "L", "F"));
List<String> list4 = new ArrayList<String>(Arrays.asList("L", "K", "D", "C", "J"));
现在我想比较这些列表中的哪些有 3 个共同元素,并将该 ListNames 保存在新的列表/数组中。
commonList1{List2, List3,} - (B,C,F)
commonList4{List5} - (K,J,L)
是否有人有更聪明的想法来做到这一点,而不是遍历所有列表,而是将每个列表与另一个列表进行比较并搜索有多少列表具有相同的交集?
最美好的祝愿 汤姆
最佳答案
listA.retainAll(listB);
listA 保存的元素也包含在 listB 中。 为了避免更改 listA,您需要创建一个新列表。
List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);
上面的代码允许您避免更改 listA 或 listB,并且 common 现在仅包含 listA 和 listB 中包含的元素。
关于java - 根据元素对数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47311925/