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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### [匹配](https://lingcoder.gitee.io/onjava8/#/book/14-Streams?id=%e5%8c%b9%e9%85%8d) * `allMatch(Predicate)`:如果流的每個元素提供給**Predicate**都返回 true ,結果返回為 true。在第一個 false 時,則停止執行計算。 * `anyMatch(Predicate)`:如果流的任意一個元素提供給**Predicate**返回 true ,結果返回為 true。在第一個 true 是停止執行計算。 * `noneMatch(Predicate)`:如果流的每個元素提供給**Predicate**都返回 false 時,結果返回為 true。在第一個 true 時停止執行計算。 我們已經在`Prime.java`中看到了`noneMatch()`的示例;`allMatch()`和`anyMatch()`的用法基本上是等同的。下面我們來探究一下短路行為。為了消除冗余代碼,我們創建了`show()`。首先我們必須知道如何統一地描述這三個匹配器的操作,然后再將其轉換為**Matcher**接口。代碼示例: ~~~ // streams/Matching.java // Demonstrates short-circuiting of *Match() operations import java.util.stream.*; import java.util.function.*; import static streams.RandInts.*; interface Matcher extends BiPredicate<Stream<Integer>, Predicate<Integer>> {} public class Matching { static void show(Matcher match, int val) { System.out.println( match.test( IntStream.rangeClosed(1, 9) .boxed() .peek(n -> System.out.format("%d ", n)), n -> n < val)); } public static void main(String[] args) { show(Stream::allMatch, 10); show(Stream::allMatch, 4); show(Stream::anyMatch, 2); show(Stream::anyMatch, 0); show(Stream::noneMatch, 5); show(Stream::noneMatch, 0); } } ~~~ 輸出結果: ~~~ 1 2 3 4 5 6 7 8 9 true 1 2 3 4 false 1 true 1 2 3 4 5 6 7 8 9 false 1 false 1 2 3 4 5 6 7 8 9 true ~~~ **BiPredicate**是一個二元謂詞,它接受兩個參數并返回 true 或者 false。第一個參數是我們要測試的流,第二個參數是一個謂詞**Predicate**。**Matcher**可以匹配所有的**Stream::\*Match**方法,所以可以將每一個**Stream::\*Match**方法引用傳遞到`show()`中。對`match.test()`的調用會被轉換成 對方法引用**Stream::\*Match**的調用。 `show()`接受一個**Matcher**和一個`val`參數,`val`在判斷測試`n < val`中指定了最大值。`show()`方法生成了整數1-9組成的一個流。`peek()`用來展示在測試短路之前測試進行到了哪一步。從輸出中可以看到每次都發生了短路。
                  <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>

                              哎呀哎呀视频在线观看