java数据流的高级用法

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.reduce

对于更细粒度的控制,有另一个流 API 函数,名为reduce,可用于对 Number 流中的值求和:

Integersum4AllHarder=listOfNums
.parallelStream()//多线程
.map(Number::getValue)//每个Number的值
.reduce(0,(sofar,next)->sofar+next);//求和

2.collect

collect是非常有用的终止操作,将流中的元素存放在不同类型的结果中。Java8通过内置的Collectors类支持多种内置的收集器。所以对于大部分常见操作,并不需要自己实现收集器。

List<Person>filtered=
persons
.stream()
.filter(p->p.name.startsWith("P"))
.collect(Collectors.toList());

System.out.println(filtered);//[Peter,Pamela]

3.flatMap

flatMap将流中的每个元素,转换为其它对象的流。所以每个对象会被转换为零个、一个或多个其它对象,以流的形式返回。这些流的内容之后会放进flatMap所返回的流中。

List<Foo>foos=newArrayList<>();

//createfoos
IntStream
.range(1,4)
.forEach(i->foos.add(newFoo("Foo"+i)));

//createbars
foos.forEach(f->
IntStream
.range(1,4)
.forEach(i->f.bars.add(newBar("Bar"+i+"<-"+f.name))));
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容