这篇文章主要介绍了JDK8中的Stream怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物。同时,理论上流的数据源可以是无限大的。
从以上介绍上(摘抄自网上= =||)可以看出:
1、JDK8中的Stream的数据源来自集合,Stream是对集合进行操作的;
2、Stream无须显示的编写多线程代码就可实现并行(利用fork/join框架)。
下面就开始用代码简单展示下Stream的用法(主要与传统写法对比)。
遍历集合
遍历集合是对集合最常见的操作了
首先是传统写法:
然后是Stream写法:
集合的遍历看起来似乎并没有什么太大区别,都是三行,下面换一个复杂的场景
求最大值(集合中都是int类型的值)
传统写法:
Stream写法:
此时Stream的优势就显而易见了,首先是代码的缩减,最主要的是语义上比第一个要清晰多了(至少我这么认为O(∩_∩)O哈哈哈~)
数据过滤:
数据过滤也是常用的操作之一,下面通过过滤集合中大于10的数来比较一下传统写法和Stream写法的差别。
传统写法:
Stream写法:
数据转换
数据的转换也是很常见的对集合的操作,下面示范一下将集合中的字符串转成数字的操作(集合中的字符串都是数字)。
首先是传统操作:
Stream操作:
可以看出这个操作也是很简洁的。
除了以上几种操作外流还能完成许多事情(许多数据库的操作流也都可以完成),各位自己可以尝试一下。另外需要注意的是,默认流是串行操作的,除非自己指定需要并行操作。
获取流的途径:
Collection.stream()-->串行流
Collection.parallelStream()-->并行流
Arrays.stream(T array) or Stream.of()-->串行流
java.util.stream.IntStream.range()-->串行流
.......
除了以上列出的几种外还有其他的方式,不过常用的就这几种了,能满足日常大部分需求了。
感谢你能够认真阅读完这篇文章,希望小编分享的“JDK8中的Stream怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。