java8之Spliterator

基本用法: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
相關文章
相關標籤/搜索