yangzhilong

基本用法:

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

 

分类:

技术点:

相关文章:

  • 2021-10-02
  • 2021-04-18
  • 2021-08-19
  • 2021-07-16
  • 2021-10-27
  • 2021-08-05
  • 2021-09-13
  • 2021-09-18
猜你喜欢
  • 2022-01-07
  • 2021-10-27
  • 2021-06-08
  • 2021-05-04
  • 2021-04-12
  • 2022-02-05
  • 2021-06-19
相关资源
相似解决方案