<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 9 `Stream` API 的改進 > 原文: [https://howtodoinjava.com/java9/stream-api-improvements/](https://howtodoinjava.com/java9/stream-api-improvements/) 通過示例了解[流](https://docs.oracle.com/javase/9/docs/api/java/util/stream/Stream.html) API(即`takeWhile`/`dropWhile`方法,`ofNullable`和`iterate`方法)中 Java 9 的新改進。 ```java Table of Contents Limiting Stream with takeWhile() and dropWhile() methods Overloaded Stream iterate method New Stream ofNullable() method ``` ## 使用`takeWhile()`和`dropWhile()`方法限制`Stream` 新方法`takeWhile`和`dropWhile`允許您基于謂詞獲取流的一部分。 這里的流可以是有序的也可以是無序的,所以: 1. 在有序流上,`takeWhile`返回流的“最長前綴”,其元素匹配給定謂詞。 2. 在無序流上,`takeWhile`返回流的子集,從流的開頭開始,其元素匹配給定謂詞(但不是全部)。 `dropWhile`方法與`takeWhile`方法相反。 1. 在有序流上,`dropWhile`返回匹配給定謂詞的“最長前綴”之后的其余項。 2. 在無序流上,`dropWhile`返回不匹配給定謂詞的剩余的流元素。 #### `takeWhile`和`dropWhile`示例 在此示例中,我們具有從`a`到`i`的字符列表。 我希望所有可能在迭代中出現在字符`d`之前的字符。 ```java List<String> alphabets = List.of("a", "b", "c", "d", "e", "f", "g", "h", "i"); List<String> subset1 = alphabets .stream() .takeWhile(s -> !s.equals("d")) .collect(Collectors.toList()); System.out.println(subset1); Output: [a, b, c] ``` 如前所述,`dropWhile`的作用與`takeWhile`方法相反,因此在上面的示例中,如果使用`dropWhile`,它將返回`takeWhile`謂詞留下的所有字符。 ```java List<String> alphabets = List.of("a", "b", "c", "d", "e", "f", "g", "h", "i"); List<String> subset2 = alphabets .stream() .dropWhile(s -> !s.equals("d")) .collect(Collectors.toList()); System.out.println(subset2); Output: [d, e, f, g, h, i] ``` ## 重載`Stream`迭代方法 `iterate()`方法用于創建以單個元素(種子)開頭的流,并通過依次應用一元運算符來生成后續元素。 結果是無限的流。 為了終止流,使用限制或其他一些短路函數,例如`findFirst`或`findAny`。 Java 8 中的`iterate`方法具有簽名: ```java static Stream iterate(final T seed, final UnaryOperator f) ``` 在 Java 9 中,新的`iterate`重載版本將謂詞作為第二個參數: ```java static Stream iterate(T seed, Predicate super T> hasNext, UnaryOperator next) ``` 讓我們看看從 Java 8 到 Java 9 的`iterate`方法的使用不同。 #### Java 8 中的迭代方法 ```java List<Integer> numbers = Stream.iterate(1, i -> i+1) .limit(10) .collect(Collectors.toList()); System.out.println(numbers); Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ``` #### Java 9 中的迭代方法 ```java List<Integer> numbers = Stream.iterate(1, i -> i <= 10 ,i -> i+1) .collect(Collectors.toList()); System.out.println(numbers); Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ``` 在上面的示例中,第一個流是 Java 8 使用限制迭代的方式。 第二個使用謂詞作為第二個參數。 ## 新的`Stream ofNullable()`方法 在 Java 8 之前,流中不能具有`null`值。 會導致`NullPointerException`。 在 Java 9 中,`ofNullable`方法使您可以創建**單元素流**,該流將包裝一個值(如果不為`null`),否則為空流。 ```java Stream<String> stream = Stream.ofNullable("123"); System.out.println(stream.count()); stream = Stream.ofNullable(null); System.out.println(stream.count()); Output: 1 0 ``` 此處,`count`方法返回流中非空元素的數量。 從技術上說,`Stream.ofNullable()`與流條件上下文中的空條件檢查非常相似。 將我的問題放在評論部分。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看