java - 如何使用流从实际数组列表中获取子列表

标签 java collections java-stream

如何使用流从实际数组列表中获取子列表并对结果执行数据操作。

I have a pojo class
abc{
rowNum,
startDate,
endDate,
name,
Id
}

我有一个以下数据格式的数组列表。

abc [ rowNum=1, startDate=2018-01-01, endDate=2018-12-31, name= Testing, Id=101]
abc [ rowNum=1, startDate=2019-01-01, endDate=2099-12-31, name= Testing, Id=101]
abc [ rowNum=1, startDate=2019-01-01, endDate=2099-12-31, name= Testing, Id=101]
abc [ rowNum=46, startDate=2020-01-01, endDate=2099-12-31, name= Java, Id=456]
abc [ rowNum=46, startDate=2020-01-01, endDate=2099-12-31, name= Java, Id=456]
abc [ rowNum=46, startDate=2019-01-01, endDate=2099-12-31, name= Java, Id=456]
abc [ rowNum=58, startDate=2021-01-01, endDate=2099-12-31, name= Sun, Id=678]
abc [ rowNum=58, startDate=2019-01-01, endDate=2099-12-31, name= Sun, Id=678]

..... 10,000 records.

如何从列表中循环 rowNum=1 并对数据执行一些逻辑,然后转到 rowNum=46 等等......就像分组 rowNum..

abc [ rowNum=1, startDate=2018-01-01, endDate=2018-12-31, name= Testing, Id=101]
abc [ rowNum=1, startDate=2019-01-01, endDate=2099-12-31, name= Testing, Id=101]
abc [ rowNum=1, startDate=2019-01-01, endDate=2099-12-31, name= Testing, Id=101]

如何使用流从实际数组列表中获取子列表。

最佳答案

您可以使用“分组依据”收集器创建按行分组的实例映射,其中行号是映射中的键。请参阅Collectors .

Map<Integer, List<Abc>> byRows = list.stream()
        .collect(Collectors.groupingBy(Abc::getRowNum));

关于java - 如何使用流从实际数组列表中获取子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57083589/

相关文章:

Java 8 : Find index of minimum value from a List

java - 我如何知道 Java Stream collect(Collectors.toMap) 是否并行化?

java - 如何使用stream#sorted()按Java 8中两个字段的乘积进行排序

java - 有没有一种优雅的方法可以在使用 Guava 转换 Collection 时删除空值?

java - 可扩展的随机和完整迭代?

java - Intellij模块依赖发现没有模块可以依赖

java - JAXB 强制命名空间 URI - 为什么它期望某些命名空间,即使它没有定义?

c# - 如何保留仅包含最后 n 个对象的列表?

java - 在java中将字符串从一个类传递到另一个类

java - 使用 log4j 进行日志记录的嵌入式 Tomcat