加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Java8 Stream:2万字20个实例,玩转集的过滤、归约、分组、聚合

发布时间:2023-03-28 10:59:04 所属栏目:教程 来源:
导读:Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。

那么什么是Stream?

Stream将要处理的元素集合看作一种流,在流的过程中,借
Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。

那么什么是Stream?

Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。

Stream可以由数组或集合创建,对流的操作分为两种:

中间操作,每次返回一个新的流,可以有多个。
终端操作,每个流只能进行一次终端操作,终端操作结束后流无法再次使用。终端操作会产生一个新的集合或值。
另外,Stream有几个特性:

stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。
stream不会改变数据源,通常情况下会产生一个新的集合或一个值。
stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。
2 Stream的创建
Stream可以通过集合数组创建。

1、通过 java.util.Collection.stream() 方法用集合创建流

<span style="color:#000000"><code class="language-java">List<span style="color:#3d8fd1"><span style="color:#999999"><</span>String<span style="color:#999999">></span></span> list <span style="color:#ac9739">=</span> Arrays<span style="color:#999999">.</span><span style="color:#3d8fd1">asList</span><span style="color:#999999">(</span><span style="color:#ac9739">"a"</span><span style="color:#999999">,</span> <span style="color:#ac9739">"b"</span><span style="color:#999999">,</span> <span style="color:#ac9739">"c"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
<span style="color:#6b7394">// 创建一个顺序流</span>
Stream<span style="color:#3d8fd1"><span style="color:#999999"><</span>String<span style="color:#999999">></span></span> stream <span style="color:#ac9739">=</span> list<span style="color:#999999">.</span><span style="color:#3d8fd1">stream</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
<span style="color:#6b7394">// 创建一个并行流</span>
Stream<span style="color:#3d8fd1"><span style="color:#999999"><</span>String<span style="color:#999999">></span></span> parallelStream <span style="color:#ac9739">=</span> list<span style="color:#999999">.</span><span style="color:#3d8fd1">parallelStream</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
</code></span>

2、使用java.util.Arrays.stream(T[] array)方法用数组创建流

<span style="color:#000000"><code class="language-java"><span style="color:#6679cc">int</span><span style="color:#999999">[</span><span style="color:#999999">]</span> array<span style="color:#ac9739">=</span><span style="color:#999999">{</span><span style="color:#ac9739">1</span><span style="color:#999999">,</span><span style="color:#ac9739">3</span><span style="color:#999999">,</span><span style="color:#ac9739">5</span><span style="color:#999999">,</span><span style="color:#ac9739">6</span><span style="color:#999999">,</span><span style="color:#ac9739">8</span><span style="color:#999999">}</span><span style="color:#999999">;</span>
IntStream stream <span style="color:#ac9739">=</span> Arrays<span style="color:#999999">.</span><span style="color:#3d8fd1">stream</span><span style="color:#999999">(</span>array<span style="color:#999999">)</span><span style="color:#999999">;</span>
</code></span>

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章