Java 根据数组的元素对数组进行分组

Java 根据数组的元素对数组进行分组,java,arrays,Java,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<

我目前正在编写一个代码,根据数组的元素对数组进行分组,我希望你能用你的智慧帮助我

我给出了以下数组:

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"));
有没有人有更聪明的办法来做到这一点,而不是浏览所有的列表,将每个列表与另一个列表进行比较,然后搜索有多少个列表具有相同的交集

祝福 汤姆

listA保存listB中也包含的元素。 为了避免更改listA,您需要创建一个新列表

List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);
List common=new ArrayList(listA);
普通。保留(列表B);

上面的代码允许您避免更改listA或listB,common现在只包含listA和listB中包含的元素。

最好使用
至少原始的
实现会更快。因此,将每个集合收集到自己的集合中,然后计算集合交点,就像使用数组一样。优点是,
Set
可以回答
O(1)
中包含
(快速)(至少在平均水平上是如此)。我想重复这一点:@lospejos我已经看过那个线程了,问题是,如果我这样做,我只能得到所有列表的公共元素。但我想对列表进行分组,其中至少有3个元素是相同的。抱歉,如果我的问题在那一点上不清楚
list1.retainal(list2);//listA现在只包含listB中也包含的元素。
您刚刚从中复制并粘贴了答案。此外,您没有使用链接正确复制信息。请发表评论或将OP链接到适当的文档。
listA.retainAll(listB);
List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);