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

时间:2019-07-17 20:22:12

标签: 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]

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

1 个答案:

答案 0 :(得分:2)

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

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