如何使用流从实际的数组列表中获取子列表,并对结果执行数据操作。
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]
如何使用流从实际的数组列表中获取子列表。
答案 0 :(得分:2)
您可以使用“分组依据”收集器来创建按行分组的实例映射,其中行号是映射中的键。参见Collectors。
Map<Integer, List<Abc>> byRows = list.stream()
.collect(Collectors.groupingBy(Abc::getRowNum));