技术文章 > java >  java基础 > 正文

java数据流的高级用法

小妮浅浅

对于数据流中基础类的用法,想必大家已经学会了。那么再深入的讲一下这个知识点,就要结合一些函数来使用了,这就是java数据流的高级用法,涉及到的函数有reduce、collect和flatMap,这几个函数大家都不陌生。下面就结合数据流的用法分别为大家带来介绍,一起看看是如何使用的。

1.reduce

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

Integer sum4AllHarder = 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 = new ArrayList<>();
 
// create foos
IntStream
.range(1, 4)
.forEach(i -> foos.add(new Foo("Foo" + i)));
 
// create bars
foos.forEach(f ->
IntStream
.range(1, 4)
.forEach(i -> f.bars.add(new Bar("Bar" + i + " <- " + f.name))));

以上就是java数据流的高级用法,在使用之前需要对这些函数的基础用法有所了解,再结合我们所学的数据流进行运用。基础知识不够牢固的,可以去查阅对应的资料进行复习。

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java中的轮换流是什么
 转换流在java中的两种类
 java打印流的输出使用
 java管道流发送线程
 java管道流写入报错
 对象流在java中的读写
 java数据流的工作原理
 java数据流进行二进制的读写
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
作者信息

小妮浅浅

认证0级讲师

最近文章
java编译命令是什么522
java的jdk是什么411
java Wrapper类的使用812
推荐视频
视频教程分类