<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 9 - 流 API 改進 > 原文: [https://beginnersbook.com/2018/06/java-9-stream-api-enhancements/](https://beginnersbook.com/2018/06/java-9-stream-api-enhancements/) 我們已經了解到 [Java 8](https://beginnersbook.com/2017/10/java-8-features-with-examples/) 引入了流 API 以及其他一些很酷的功能。如果您不熟悉流,請參閱本指南:[Java 8 - 流 API](https://beginnersbook.com/2017/10/java-8-stream-tutorial/)。Java 9 為流 API 引入了四種新方法。這些方法添加在`java.util.Stream`接口中。 ## Java 9 - 流 API 改進 Java 9 在流中添加了以下四種方法。由于`Stream`是一個接口,添加到它的方法是默認的和靜態的。這是因為 java 8 允許我們在接口中使用[默認和靜態方法](https://beginnersbook.com/2017/10/java-8-interface-changes-default-method-and-static-method/)。 1. `dropWhile()` - 默認方法 2. `takeWhile()` - 默認方法 3. `iterate()` - 靜態方法 4. `ofNullable()` - 靜態方法 ## Java 9 - `Stream dropWhile()`方法 方法`dropWhile()`刪除流的所有元素,直到給定的謂詞失敗。 **例如:** ```java jshell> Stream<Integer> mystream = Stream.of(11, 22, 40, 60, 100) mystream ==> [email?protected] jshell> mystream.dropWhile(num -> num < 50).forEach(num -> System.out.println(num)) 60 100 ``` ![Java 9 Stream doWhile() method](https://img.kancloud.cn/2e/58/2e5833673f3e0b2bf76edb144aeed95c_1024x398.jpg) **注意:當流是無序的**時,`dropWhile()`會丟棄所??有元素,直到給定的謂詞失敗,一旦謂詞失敗,此方法不會檢查流的其他元素。這意味著結果流可能具有與謂詞匹配的元素,讓我們舉一個例子來理解這一點。 ```java jshell> Stream<Integer> mystream = Stream.of(11, 22, 40, 60, 10, 15, 30, 100) mystream ==> [email?protected] jshell> mystream.dropWhile(num -> num < 50).forEach(num -> System.out.println(num)) 60 10 15 30 100 ``` 這里,元素 60 之后的流中存在的元素`10,15,30`與謂詞匹配但是它們沒有被`dropWhile()`刪除,因為當謂詞在元素 60 上失敗時,該方法沒有檢查其他元素。 ![Java 9 dropWhile() method unordered stream](https://img.kancloud.cn/b9/75/b975b0e98b3e53bee61ce47585df7258_1024x371.jpg) ## Java 9 - `Stream takeWhile()`方法 方法`takeWhile()`與`dropWhile()`方法相反。此方法在結果流中獲取流的所有元素,直到謂詞失敗。簡而言之,當謂詞失敗時,它會丟棄該元素以及流中該元素之后的所有元素。讓我們舉幾個例子來理解這一點。 這里**對有序流**使用`takeWhile()`方法對流進行排序,`takeWhile()`方法獲取所有元素,直到謂詞在元素值 60 處失敗。 ```java jshell> Stream<Integer> mystream = Stream.of(10, 20, 30, 40, 60, 90, 120) mystream ==> [email?protected] jshell> mystream.takeWhile(num -> num < 50).forEach(num -> System.out.println(num)) 10 20 30 40 ``` **對無序流**使用`takeWhile()`方法與`dropWhile()`方法類似,一旦謂詞失敗,此方法也不會進一步檢查元素。這就是元素 10 和 15 被丟棄的原因,因為它們位于元素 60 之后(謂詞失敗)。 ```java jshell> Stream<Integer> mystream = Stream.of(10, 20, 40, 60, 70, 10, 15, 100) mystream ==> [email?protected] jshell> mystream.takeWhile(num -> num < 50).forEach(num -> System.out.println(num)) 10 20 40 ``` ## Java 9 - `Stream iterate()`方法 Java 9 中的`iterate`方法有三個參數。 **第一個參數**是初始化值,返回的流以此值開始。 **第二個參數**是謂詞,迭代繼續,直到這個給定的謂詞返回`false`。 **第三個參數**更新上一次迭代的值。 **示例:**在此示例中,第一個參數為 1.流以元素 1 開頭。 `num -> num < 30`是第二個參數,它是一個謂詞。迭代繼續,直到返回`false`。`num -> num * 3`是更新從上一次迭代返回的值的第三個參數。這類似于循環的計數器變量。 ```java jshell> IntStream.iterate(1, num -> num < 30, num -> num*3).forEach(num ->System.out.println(num)) 1 3 9 27 ``` 從值 1 開始,我們將返回值乘以 3,這將一直持續到返回值大于 30。 ![Java 9 Iterate method](https://img.kancloud.cn/66/13/6613d1721cf7d8a3c87fd044a0ad2c24_1024x325.jpg) ## Java 9 - `Stream ofNullable()`方法 引入此方法是為了避免`NullPointerException`。如果流為`null`,則此方法返回空流。它也可以在非空流上使用,返回單個元素的順序流。 **空流示例** ```java jshell> Stream<String> stream = Stream.ofNullable(null) stream ==> [email?protected] jshell> stream.forEach(str -> System.out.println(str)) jshell> ``` ![Java 9 ofNullable() method](https://img.kancloud.cn/5e/8b/5e8baee49ca0e867adaf7656b1d865b1_1024x265.jpg) **非空流示例** ```java jshell> Stream<String> stream = Stream.ofNullable("Rose") stream ==> [email?protected] jshell> stream.forEach(str -> System.out.println(str)) Rose jshell> ``` 這些是在 Java SE 9 中完成的四種流 API 增強功能。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看