<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 `Spliterator`接口 > 原文: [https://howtodoinjava.com/java/collections/java-spliterator/](https://howtodoinjava.com/java/collections/java-spliterator/) Java `Spliterator`接口是一個內部迭代器,可將[流](https://howtodoinjava.com/java8/java-8-tutorial-streams-by-examples/)分解為較小的部分。 這些較小的零件可以并行處理。 在實際編程中,我們可能永遠不需要直接使用**分離器**。 在正常操作下,它的行為將與 Java [**迭代器**](https://howtodoinjava.com/java/collections/java-iterator/)完全相同。 ```java Spliterator<T> spliterator = list.spliterator(); ``` Java 集合類提供默認的`stream()`和`parallelStream()`方法,這些方法在內部通過調用`splitter()`來使用`Spliterator()`。 它有助于并行處理收集數據。 ```java default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); } default Stream<E> parallelStream() { return StreamSupport.stream(spliterator(), true); } ``` ## 1\. Java `Spliterator`特性 以下是 Java 中`Spliterator`提供的特性列表。 1. 在 [Java 8](https://howtodoinjava.com/java-8-tutorial/) 中引入了分離器。 2. 它為任何集合的元素流的并行處理提供支持。 3. 它提供`tryAdvance()`方法來分別迭代不同線程中的元素。 它有助于并行處理。 4. 要在單個線程中順序迭代元素,請使用 `forEachRemaining()`方法。 5. 如果可能,使用`trySplit()`方法對分割器進行分區。 6. 它有助于將`hasNext()`和`next()`操作組合為一種方法。 ## 2\. Java `Spliterator`方法 1. **`int features()`**:返回分離器的特性列表。 它可以是`ORDERED`,`DISTINCT`,`SORTED`,`SIZED`,`NONNULL`,`IMMUTABLE`,`CONCURRENT`和`SUBSIZED`中的任何一個。 2. **`long EstimateSize()`**:返回`forEachRemaining()`遍歷將遇到的元素數量的估計值;如果無限,未知或計算成本太高,則返回`Long.MAX_VALUE`。 3. **`default void forEachRemaining(Consumer action)`**:依次對當前線程中的每個剩余元素執行給定的操作,直到所有元素都已處理或該動作引發異常。 4. **`default comparator getComparator()`**:如果分離器的源由比較器排序,則返回該比較器。 5. **`default long getExactSizeIfKnown()`**:如果此分離器為`SIZED`,則返回`estimateSize()`,否則為 -1。 6. **`default boolean hasCharacteristics(int features)`**:如果`spliterator`的`features()`包含所有給定的特征,則返回`true`。 7. **`boolean tryAdvance(Consumer action)`**:如果存在剩余元素,則對其執行給定操作,并返回`true`; 否則返回`false`。 8. **`Spliterator trySplit()`**:如果可以對分離器進行分區,則返回一個覆蓋元素的`Spliterator`,從該方法返回后,該分離器將不覆蓋該元素。 ## 3\. Java `Spliterator`示例 #### 3.1 `Spliterator`特性示例 驗證從[`ArrayList`](https://howtodoinjava.com/java-arraylist/)獲得的`Spliterator`特性的 Java 示例。 ```java ArrayList<String> list = new ArrayList<>(); Spliterator<String> spliterator = list.spliterator(); int expected = Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED; System.out.println(spliterator.characteristics() == expected); //true if (spliterator.hasCharacteristics(Spliterator.ORDERED)) { System.out.println("ORDERED"); } if (spliterator.hasCharacteristics(Spliterator.DISTINCT)) { System.out.println("DISTINCT"); } if (spliterator.hasCharacteristics(Spliterator.SORTED)) { System.out.println("SORTED"); } if (spliterator.hasCharacteristics(Spliterator.SIZED)) { System.out.println("SIZED"); } if (spliterator.hasCharacteristics(Spliterator.CONCURRENT)) { System.out.println("CONCURRENT"); } if (spliterator.hasCharacteristics(Spliterator.IMMUTABLE)) { System.out.println("IMMUTABLE"); } if (spliterator.hasCharacteristics(Spliterator.NONNULL)) { System.out.println("NONNULL"); } if (spliterator.hasCharacteristics(Spliterator.SUBSIZED)) { System.out.println("SUBSIZED"); } ``` 程序輸出。 ```java true ORDERED SIZED SUBSIZED ``` #### 3.2 `Spliterator estimateSize()`和`getExactSizeIfKnown()`示例 Java 示例,用于獲取支持集合的大小,即由 spliterator 迭代的元素數量。 ```java ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); Spliterator<String> spliterator = list.spliterator(); System.out.println(spliterator.estimateSize()); System.out.println(spliterator.getExactSizeIfKnown()); ``` 程序輸出: ```java 4 4 ``` #### 3.3 `Spliterator getComparator()`示例 查找分配器使用的比較器的 Java 示例。 ```java SortedSet<String> set = new TreeSet<>( Collections.reverseOrder() ); set.add("A"); set.add("D"); set.add("C"); set.add("B"); System.out.println(set); System.out.println(set.spliterator().getComparator()); ``` 程序輸出: ```java [D, C, B, A] java.util.Collections$ReverseComparator@7852e922 ``` #### 3.4 `Spliterator trySplit()`示例 Java 示例,將元素分為兩組并獨立進行迭代。 ```java ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); list.add("E"); list.add("F"); Spliterator<String> spliterator1 = list.spliterator(); Spliterator<String> spliterator2 = spliterator1.trySplit(); spliterator1.forEachRemaining(System.out::println); System.out.println("========"); spliterator2.forEachRemaining(System.out::println); ``` 程序輸出: ```java D E F ======== A B C ``` #### 3.5 `Spliterator forEachRemaining()`示例 使用`forEachRemaining()`方法在單個語句中執行`hasNext()`和`next()`操作的 Java 示例。 ```java ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list.add("D"); Spliterator<String> spliterator = list.spliterator(); spliterator.forEachRemaining(System.out::println); ``` 程序輸出: ```java A B C D ``` ## 4。總結 在本教程中,我們學習了 Java `Spliterator`接口。 我們學習了`Spliterator`方法和一些簡單示例,以遍歷集合元素和流,這與`Spliterator`中的其他有用方法分開。 將我的問題放在評論部分。 學習愉快! 參考文獻: [`Spliterator`接口 Java 文檔](https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.html)
                  <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>

                              哎呀哎呀视频在线观看