使用Java 8轻松实现流程集合

在Java中,集合和数组是两种常见的数据结构,定期执行许多操作,包括添加,删除,修改,查询,聚合,统计和过滤。 这些操作也存在于关系数据库中。 但是,在Java 8之前处理集合和数组并不是很方便。

通过引入一个名为Stream API的新抽象,Java 8中的这个问题得到了极大的缓解,它允许我们以声明的方式处理数据。 本文介绍如何使用Stream。 请注意,Stream的性能和原理不是本文的核心部分。


Stream Introduction

Stream通过查询,类似于SQL语句的数据库中的数据,为Java集合操作和表达式提供高级抽象。

Stream API可以显著提高Java程序员的工作效率,并允许他们编写有效,干净和简洁的代码。

要处理的元素集合被视为流,它在流水线中传输。 可以在管道的节点上处理这些元素,例如过滤器,排序和聚合。

Java Streams的特性和优势:

stream不是数据结构,而只是数据源的视图,可以是数组,Java容器或I / O通道。

对流的任何修改都不会更改数据源。 例如,过滤流不会删除已过滤的元素,但会生成不包含过滤元素的新Stream。

Stream上的操作不会立即执行。 只有在用户真正需要结果时才会执行它们。

耗材。 stream的元素仅在stream的生命期间访问过一次。 一旦遍历,Stream就会失效,就像容器迭代器一样。 如果要再次遍历stream,则必须重新生成新stream。

让我们用一个例子来看看Stream可以做什么:

前面的示例将一些塑料球作为数据源,过滤掉红色的球,将它们融化并将它们转换为随机三角形。 另一个滤镜删除小三角形。 减速器总结了周长

如上图所示,Stream涉及三个关键操作:流创建,中间操作和终端操作。

Stream Creation

在Java 8中,可以使用许多方法来创建Stream。

1. 使用现有集合创建流

除了许多与stream相关的类之外,Java 8还增强了集合类本身。 Java 8中的stream方法可以将集合转换为Stream。

上面的示例从现有List创建Stream。 此外,parallelStream方法可以为集合创建并行流。

从集合中创建Stream也很常见。

2. 使用流方法创建流

Stream提供的方法可用于直接返回由指定元素组成的Stream。

前面的代码使用of方法创建并返回Stream。

流中间操作

Stream可以具有许多中间操作,这些操作可以组合以形成管道。 每个中间操作就像管道上的工人一样。 每个工作人员都可以处理Stream。 中间操作返回一个新的Stream。

filter

过滤方法用于按指定条件过滤元素。 以下代码段使用filter方法过滤空字符串:

Map

map方法将每个元素映射到其对应的结果。 以下代码段使用map方法生成相应元素的平方数:

limit/skip

Limit返回Stream中的前N个元素。 跳过放弃Stream中的前N个元素。 以下代码段使用limit方法保留前四个元素:

Sorted

已排序的方法对Stream中的元素进行排序。 以下代码段使用sorted方法对Stream元素进行排序:

Distinct

distinct方法用于删除重复项。 以下代码段使用distinct方法来重复删除元素:

接下来,我们使用示例和图来说明在执行操作过滤,映射,排序,限制和区分后流将发生什么。

以下是代码:

流终端操作

流终端操作也返回Stream。 我们如何将Stream转换为所需类型? 例如,计算Stream中的元素并将该Stream转换为集合。 为此,我们需要终端操作。

终端操作将使用Stream并生成最终结果。 也就是说,在对Stream执行终端操作之后,流不可重用,并且不允许在该流上进行任何中间操作。 否则,抛出异常:

这与“你不能两次踏入同一条河流”的含义相同。

forEach

forEach方法遍历Stream中的元素。 以下代码段使用forEach返回10个随机数:

Count

count方法计算Stream中的元素。

Summary

本文介绍了Java 8中Streams的用法和特性。本文还介绍了流创建,流中间操作和终端操作。

我们可以使用两种方法来创建Stream:使用Collection的stream方法或使用Stream的方法。

流中间操作可以处理Streams。 中间操作的输入和输出都是Streams。 中间操作包括过滤,映射和排序。

流终端操作可以将Stream转换为其他容器,例如计算Stream中的元素,将Stream转换为集合并迭代Stream中的元素。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();