我目前正致力于根据他们的元素对Arrays进行分组的代码,我希望你能用你的智慧帮助我。
我已经给出了以下数组:
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保存在新的List / Array中。
commonList1{List2, List3,} - (B,C,F)
commonList4{List5} - (K,J,L)
有没有人更聪明地做到这一点,而不是遍历所有列表,将每个列表与另一个列表进行比较并搜索有多少列表具有相同的交集?
祝福 汤姆
答案 0 :(得分:1)
listA.retainAll(listB);
listA包含listB中也包含的元素。 为避免更改listA,您需要创建一个新列表。
List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);
上面的代码允许你不要改变listA或listB,而common现在只包含listA和listB中包含的元素。