当前位置:嗨网首页>书籍在线阅读

38-实现自己的流生成器

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.12 实现自己的流生成器

数据流是一系列数据,允许以顺序或并行方式将一系列操作(通常用lambda表达式来表示)应用于其中,以过滤、转换、分类、减少或构建新的数据结构。它是在Java 8中引入的,并且是该版本中引入的最重要功能之一。

那些数据流是基于 Stream 接口以及 java.util.stream 包中包含的一些相关的类和接口的。而且还涉及许多其他类中引入的新方法,用以生成来自不同数据结构的流。你可以从实现 Collection 接口的每个数据结构上创建一个 Stream 接口,这些数据来自 File、Directory、Array 和其他许多源。

Java还包含了不同的机制,通过它们为自己的源来创建流。而其中最重要的如下。

  • Supplier 接口:该接口定义了 get() 方法。当Stream需要处理另一个对象时,它将由 Stream 调用。你可以使用 Stream 类的 generate() 静态方法,并利用 Supplier 接口来创建 Stream 。由于考虑到这个源可能是无限的,所以必须使用诸如 limit() 或类似的方法来限制 Stream 中元素的数量。
  • Stream.Builder 接口:该接口提供了向 Stream 中添加元素的 accept()add() 元素,以及 build() 方法,该方法返回使用之前元素创建的 Stream 接口。
  • Spliterator 接口:该接口定义了遍历和拆分源元素的必要方法。可以使用 Stream Support 类的 stream() 方法生成 Stream 接口来处理 Spliterator 的元素。

在本节中,我们将学习如何实现自己的 Spliterator 接口以及如何创建 Stream 接口来处理数据。这里我们将会使用元素矩阵。一个普通的 Stream 接口应该一次处理一个元素,但若要使用 Spliterator 类,可以一次处理一行。