Skip to content

Commit fd76eba

Browse files
committed
revision[14] Optional类
1 parent a0c1325 commit fd76eba

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

‎docs/book/14-Streams.md‎

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,7 @@ Not much of a cheese shop really is it
732732
幸运的是,我们稍后就会知道如何解决这个问题。
733733

734734
<!-- Intermediate Operations -->
735+
735736
## 中间操作
736737

737738
中间操作用于从一个流中获取对象,并将对象作为另一个流从后端输出,以连接到其他操作。
@@ -983,9 +984,9 @@ class FunctionMap3 {
983984

984985
### 在 `map()` 中组合流
985986

986-
假设我们现在有了一个传入的元素流,并且打算对流元素使用 `map()` 函数。现在你已经找到了一些可爱并独一无二的函数功能,但是问题来了:这个函数功能是产生一个流。我们想要的只是产生流的元素,生成的却是一个元素流的流。
987+
假设我们现在有了一个传入的元素流,并且打算对流元素使用 `map()` 函数。现在你已经找到了一些可爱并独一无二的函数功能,但是问题来了:这个函数功能是产生一个流。我们想要产生一个元素流,而实际却产生了一个元素流的流。
987988

988-
`flatMap()` 在这里做了两件事情:获取流产生( stream-producing)函数,并将其应用于新到的元素(如 `map()` 所做的),然后获取每一个流并将其“扁平”为元素。所以它的输出只是元素。
989+
`flatMap()` 做了两件事:将产生流的函数应用在每个元素上(与 `map()` 所做的相同),然后将每个流都扁平化为元素,因而最终产生的仅仅是元素。
989990

990991
`flatMap(Function)`:当 `Function` 产生流时使用。
991992

@@ -995,7 +996,7 @@ class FunctionMap3 {
995996

996997
`flatMapToDouble(Function)`:当 `Function` 产生 `DoubleStream` 时使用。
997998

998-
为了弄清它的工作原理,我们从 `map()` 的一个刻意设计的函数开。该函数接受一个整数并产生一个字符串流:
999+
为了弄清它的工作原理,我们从传入一个刻意设计的函数给 `map()` 开始。该函数接受一个整数并产生一个字符串流:
9991000

10001001
```java
10011002
// streams/StreamOfStreams.java
@@ -1018,7 +1019,7 @@ java.util.stream.ReferencePipeline$Head
10181019
java.util.stream.ReferencePipeline$Head
10191020
```
10201021

1021-
我们天真的希望能够得到字符串流,但是结果却是流元素为“Head”流的流。我们可以使用 `flatMap()` 解决这个问题:
1022+
我们天真地希望能够得到字符串流,但实际得到的却是“Head”流的流。我们可以使用 `flatMap()` 解决这个问题:
10221023

10231024
```java
10241025
// streams/FlatMap.java
@@ -1046,9 +1047,9 @@ Fozzie
10461047
Beaker
10471048
```
10481049

1049-
从映射返回的每个流都会自动扁平为其组件字符串。
1050+
从映射返回的每个流都会自动扁平为组成它的字符串。
10501051

1051-
如下是另一演示,我们从一个整数流开始,使用每一个整数去创建更多的随机数。
1052+
下面是另一个演示,我们从一个整数流开始,然后使用每一个整数去创建更多的随机数。
10521053

10531054
```java
10541055
// streams/StreamOfRandoms.java
@@ -1071,7 +1072,7 @@ public class StreamOfRandoms {
10711072
58 -1 55 93 -1 61 61 29 -1 68 0 22 7 -1 88 28 51 89 9 -1
10721073
```
10731074

1074-
在这里我们引入了 `concat()`,它以参数顺序组合了两个流。 如此,我们在每个随机 `Integer` 流的末尾添加一个 -1 作为标记。你可以看到最终流确实是从一组扁平流中创建的。
1075+
在这里我们引入了 `concat()`,它以参数顺序组合两个流。 如此,我们在每个随机 `Integer` 流的末尾添加一个 -1 作为标记。你可以看到最终流确实是从一组扁平流中创建的。
10751076

10761077
因为 `rand.ints()` 产生的是一个 `IntStream`,所以我必须使用 `flatMap()`、`concat()` 和 `of()` 的特定整数形式。
10771078

@@ -1098,7 +1099,7 @@ public class FileToWords {
10981099

10991100
**注意**:`\\W+` 是一个正则表达式。他表示“非单词字符”,`+` 表示“可以出现一次或者多次”。小写形式的 `\\w` 表示“单词字符”。
11001101

1101-
我们之前遇到的问题是 `Pattern.compile().splitAsStream()` 产生的结果为流,这意味着当我们只是想要一个简单的单词流时,在传入的行流(stream of lines)上调用 `map()` 会产生一个单词流的流。幸运的是,`flatMap()` 可以将元素流的流扁平为一个简单的元素流。或者,我们可以使用 `String.split()` 生成一个数组,其可以被 `Arrays.stream()` 转化成为流:
1102+
我们之前遇到的问题是 `Pattern.compile().splitAsStream()` 产生的结果为流,这意味着当我们只是想要一个简单的单词流时,在传入的行流(stream of lines)上调用 `map()` 会产生一个单词流的流。幸运的是,`flatMap()` 可以将元素流的流扁平化为一个简单的元素流。或者,我们可以使用 `String.split()` 生成一个数组,其可以被 `Arrays.stream()` 转化成为流:
11021103

11031104
```java
11041105
.flatMap(line -> Arrays.stream(line.split("\\W+"))))
@@ -1131,8 +1132,6 @@ Not much of a cheese shop really
11311132

11321133
在 `System.out.format()` 中的 `%s` 表明参数为 **String** 类型。
11331134

1134-
1135-
11361135
<!-- Optional -->
11371136
## Optional类
11381137

0 commit comments

Comments
 (0)