java8之Spliterator


基本用法:

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);
        });
    }
}

運行結果:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM