基本用法:java
import java.util.Arrays; import java.util.Spliterator; import java.util.stream.IntStream; public class SpliteratorTest { /** * Spliterator是將一個stream進行對半平分的操做類 * * Arrays.parallelSetAll 和 IntStream.range能夠生成一個指定長度Int的Stream * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { int[] array = new int[10]; Arrays.parallelSetAll(array, i -> i); // 這個方法也能夠構建一個Stream,而後再構建Spliterator Spliterator.OfInt test = IntStream.range(0, 10).spliterator(); test.forEachRemaining((int value) -> { System.out.println(Thread.currentThread().getName() + "--" + value); }); System.out.println("+++++++++++"); Spliterator.OfInt sp = Arrays.spliterator(array); // 分割完後sp還剩5個元素,sp1也是5個元素 Spliterator.OfInt sp1 = sp.trySplit(); // 分割完後sp1爲3個,sp2爲2個 Spliterator.OfInt sp2 = sp1.trySplit(); sp1.forEachRemaining((int value) -> { System.out.println(Thread.currentThread().getName() + "--" + value); }); System.out.println("------------"); sp2.forEachRemaining((int value) -> { System.out.println(Thread.currentThread().getName() + "--" + value); }); System.out.println("------------"); sp.forEachRemaining((int value) -> { System.out.println(Thread.currentThread().getName() + "--" + value); }); } }
運行結果:spa
main--0 main--1 main--2 main--3 main--4 main--5 main--6 main--7 main--8 main--9 +++++++++++ main--2 main--3 main--4 ------------ main--0 main--1 ------------ main--5 main--6 main--7 main--8 main--9