如何对列表中包含相同精确值的所有列表进行分组。
List<List<String>> list = new ArrayList<>();
这个列表包含list1 list2 list3等等...... 如果没有检查 list3.get(0) 等,我想查找 list1.get(0) 是否与 list2.get(0) 相同... 稍后,如果我在每个列表中找到相同的值,我需要对列表进行分组。 例如,如果 true 添加 list1 和 list3 以及其他被发现的
List<List<String>> list2 = new ArrayList<>();
现在检查 list2.get(0) 是否等于其他,如果是,则将它们分组并将它们添加到另一个:
List<List<String>> list3 = new ArrayList<>();
到目前为止我取得的成就:
private static void findEqualLists(List<List<String>> list) {
int i = 0;
for (List<String> list1 : list) {
if (!Collections.disjoint(list1, list.get(i))) {
System.out.println(list1.get(0)+list.get(i).get(0));
}else{
System.out.println(list1.get(0)+list.get(i).get(0));
}
i++;
}
}
值示例:
list = {{2017-02,jhon,car},{2017-03,maria,car},{2017-03, boy, car}, {2017-01,arya, car}, {2017-02, girl, car}}
输出:
Group1:
2017-03,maria,car
2017-03, boy, car
Group2:
2017-02,jhon,car
2017-02, girl, car
Group3
2017-01,arya, car
最佳答案
private static Map<String, List<List<String>>>
findEqualLists(List<List<String>> list) {
return list.stream().collect(Collectors.groupingBy(l -> l.get(0)));
}
返回的 Map 将使用 l.get(0)
作为唯一键,每个对应的值都是一个仅由第一个元素与该键匹配的列表组成的列表。
关于Java: List<List<String>> list = new ArrayList<>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937915/