JDK8中的Stream怎么用

这篇文章主要介绍了JDK8中的Stream怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

为什么需要 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的用法(主要与传统写法对比)。

遍历集合

遍历集合是对集合最常见的操作了

首先是传统写法:

JDK8中的Stream怎么用

然后是Stream写法:

JDK8中的Stream怎么用

集合的遍历看起来似乎并没有什么太大区别,都是三行,下面换一个复杂的场景

求最大值(集合中都是int类型的值)

传统写法:

JDK8中的Stream怎么用

Stream写法:

JDK8中的Stream怎么用

此时Stream的优势就显而易见了,首先是代码的缩减,最主要的是语义上比第一个要清晰多了(至少我这么认为O(∩_∩)O哈哈哈~)

数据过滤:

数据过滤也是常用的操作之一,下面通过过滤集合中大于10的数来比较一下传统写法和Stream写法的差别。

传统写法:

JDK8中的Stream怎么用

Stream写法:

JDK8中的Stream怎么用

数据转换

数据的转换也是很常见的对集合的操作,下面示范一下将集合中的字符串转成数字的操作(集合中的字符串都是数字)。

首先是传统操作:

JDK8中的Stream怎么用

Stream操作:

JDK8中的Stream怎么用

可以看出这个操作也是很简洁的。

除了以上几种操作外流还能完成许多事情(许多数据库的操作流也都可以完成),各位自己可以尝试一下。另外需要注意的是,默认流是串行操作的,除非自己指定需要并行操作。

获取流的途径:

Collection.stream()–>串行流

Collection.parallelStream()–>并行流

Arrays.stream(T array) or Stream.of()–>串行流

java.util.stream.IntStream.range()–>串行流

…….

除了以上列出的几种外还有其他的方式,不过常用的就这几种了,能满足日常大部分需求了。

感谢你能够认真阅读完这篇文章,希望小编分享的“JDK8中的Stream怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/222808.html

(0)
上一篇 2022年1月6日
下一篇 2022年1月6日

相关推荐

发表回复

登录后才能评论