Java: List<List<String>> list = new ArrayList<>();

标签 java arrays list

如何对列表中包含相同精确值的所有列表进行分组。

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

最佳答案

你想要Collectors.groupingBy :

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/

相关文章:

java - 如何在输入中添加 java 图标和阵容文本?

javascript - 当ID在对象外部时如何将其移动到对象内部?

python - 在 list2 文件中查找 list1 文件的所有匹配项,创建文件并将相关输出写入其中。 Python

java - 在我的 Vector 上实现 Vector.sort() 时遇到问题

c# - 如何从声明为 IEnumerable<T> 的方法/属性安全地返回 List<T>?

java - 在javafx中创建连续样条曲线

java - 对于错误的配置抛出未经检查的异常是一个好主意吗?

java - Hibernate 是否批量更新

C动态分配结构数组及其组件

Javascript 递归函数。将数据存储在数组中时出现错误结果