java - 根据元素对数组进行分组

标签 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<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/

相关文章:

java - 将java文件的输出获取到jsp页面

java - 为什么这个类即使没有正确实现它的接口(interface)也能编译?

C++ 指针和数组

arrays - 如何从文本字段获取用户输入,然后将其输入更改为数组?

objective-c - 订购数组以获得最佳饼图显示(将小值分开)

java - 我应该在 Java EE 应用程序中的什么位置(确切地)使用同步

java - 数组的非法启动

java - 为什么我的 TCP 连接在运行命令后关闭? - java

python - 数组 reshape 未正确映射到 numpy 网格

将 uint8 数组转换为结构数组而不是 memcpy