本教程操作环境: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
暂无评论内容