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

Java 如何使用流从实际数组列表中获取子列表,java,collections,java-stream,Java,Collections,Java Stream,如何使用streams从实际的arraylist中获取子列表,并对结果执行数据操作 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

如何使用streams从实际的arraylist中获取子列表,并对结果执行数据操作

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=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.
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]
如何从列表中循环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]
如何使用streams从实际arraylist获取子列表。

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

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]
Map byRows=list.stream()
.collect(收集器.groupingBy(Abc::getRowNum));
您可以使用“分组依据”收集器创建按行分组的实例的映射,其中行号是映射中的键。看

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]
Map byRows=list.stream()
.collect(收集器.groupingBy(Abc::getRowNum));

如何迭代/循环上述映射以打印每个元素。@user5982569 use可以使用
byRows.forEach((k,v)->System.out.println(“键:+k+”&值:+v))上面的语句为我提供了输出:key:1和value:[Term@26e04050, Term@dbb56d97]关键字:3和值:[Term@b77a0c8e, Term@edb8a37]如何在上面的映射上迭代/循环以打印每个元素。@user5982569 use可以使用
byRows.forEach((k,v)->System.out.println(“key:+k+”&value:+v))上面的语句为我提供了输出:key:1和value:[Term@26e04050, Term@dbb56d97]关键字:3和值:[Term@b77a0c8e, Term@edb8a37]