mirror of
https://github.com/LingCoder/OnJava8.git
synced 2026-08-23 22:43:28 +08:00
校订 第14章-流支持
This commit is contained in:
@@ -7,15 +7,15 @@
|
||||
|
||||
## 流支持
|
||||
|
||||
Java 设计者面临着一个难题。他们拥有着一系列已经存在的库,这些库不仅仅在 Java 库本身中所使用,并且被用户编写的数百万行代码中使用。那他们如何将一个全新的流的基本概念融入到已经存在的库中?
|
||||
Java 设计者面临着这样一个难题:现存的大量类库不仅为 Java 所用,同时也被应用在整个 Java 生态圈数百万行的代码中。如何将一个全新的流的概念融入到现有类库中呢?
|
||||
|
||||
比如一个简单的例子 **Random**,他们只是增加了更多的方法。只要现有方法没有被改变,遗留代码就不会受到干扰。
|
||||
简单的例子,如在 **Random** 中添加更多的方法。因为只要不改变原有的方法,遗留代码就不会受到干扰。
|
||||
|
||||
最大的挑战来自使用接口的库。集合类是其中重要的组成部分,因为你想把一个集合转换为流。如果向接口添加新方法,则会破坏实现接口但未实现新方法的每个类。
|
||||
问题是,接口部分怎么改造呢?特别是涉及集合类接口的部分。如果你想把一个集合转换为流,直接向接口添加新方法会破坏所有老的接口实现类。
|
||||
|
||||
Java 8 中引入的解决方案是在[接口](10-Interfaces.md)中添加 **default**(**默认**)方法。通过这种方案,设计者们可以很平滑地将流式(*stream*)方法转换到现有类中。同时,流方法预置的操作几乎满足了我们平常所有的需求。流操作有三种类型:创建流,修改流元素(中间操作, *Intermediate Operations*),消费流元素(终端操作, *Terminal Operations*)。最后一种类型通常意味着收集流元素(通常是到集合中)。
|
||||
Java 8 采用的解决方案是:在[接口](10-Interfaces.md)中添加被 **default**(**默认**)修饰的方法。通过这种方案,设计者们可以将流式(*stream*)方法平滑地嵌入到现有类中。流方法预置的操作几乎已满足了我们平常所有的需求。流操作的类型有三种:创建流,修改流元素(中间操作, *Intermediate Operations*),消费流元素(终端操作, *Terminal Operations*)。最后一种类型通常意味着收集流元素(通常是到集合中)。
|
||||
|
||||
下面我们来看看每一种类型的流操作。
|
||||
下面我们来看下每种类型的流操作。
|
||||
|
||||
<!-- Stream Creation -->
|
||||
## 流创建
|
||||
|
||||
Reference in New Issue
Block a user