• 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
  • 相关阅读:
    git如何进行远程分支切换
    js中实现多态
    css选择器中:first-child与:first-of-type的区别
    js实现图片延时加载的原理
    认识AMD、CMD、UMD、CommonJS
    CORS详解
    JS实现继承的五种方式
    jQuery.fn.extend() 函数详解
    Java基础面试题
    Java面试题集
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/10985658.html
Copyright © 2020-2023  润新知