使⽤java中的stream,嵌套list根据实体某个字段求和
嵌套list求和,如题
记录⼀下,搞了半天,积累⼀下,后续写stream整套的⽂章
for循环解决
int sum =0;
for(EntityA entityA : list){
for(EntityB entityB : EntityBList()){
sum += Count();
}
}
⽤stream流解决
int res = list.stream().map(EntityA::getEntityBList)
.map(item -> item.stream().map(EntityB::getCount).reduce(0, Integer::sum))
.reduce(0, Integer::sum);
不过,对于性能有待考究,我觉的流应该⽐for循环要快,但是相⽐较速度更慢,我还是觉得有些奇怪
我的测试数据如下:
数据量使⽤for循环解决的时间使⽤stream流解决的时间101ms80ms
1001ms85ms
10003ms84ms
1000010ms94ms
100_00025ms122ms
1_000_000125ms413ms
java stream10_000_0001133ms3164ms
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论