zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    将WinServers2019打造成家用系统
    WindowsServers2019上手体验
    【代码模板】不存在的NOIP2017
    NOIP2018初赛翻车总结
    【初赛】各种排序算法总结
    【Luogu1996】约瑟夫问题(模拟,解法汇总)
    【初赛】NOIP2018程序模板
    MongoDB
    非关系型数据库----MongoDB
    用Python来操作redis 以及在Django中使用redis
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/10985658.html
Copyright © 2011-2022 走看看