前言
研读ArrayList源码的时候,发现使用了(Spliterator)分割迭代器。就简单的了解一下分割迭代器的使用方式。
原理
看一个分割迭代器的使用案例:
public class SpliteratorTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 100 ; i++) { list.add(i+""); } // 分割迭代器 Spliterator spliterator = list.spliterator(); Spliterator s1 = spliterator.trySplit(); Spliterator s2 = spliterator.trySplit(); System.out.println("===============spliterator================"); spliterator.forEachRemaining((i) -> System.out.print(i+" ")); System.out.println(); System.out.println("===============s1================"); s1.forEachRemaining((i) -> System.out.print(i+" ")); System.out.println(); System.out.println("===============s2================"); s2.forEachRemaining((i) -> System.out.print(i+" ")); System.out.println(); } }
运行结果:
总结
分割迭代器(Spliterator)平时工作中使用也比较少,我能想到的使用场景就是,一个list size特别大,通过分割迭代器(Spliterator)分割然后起多线程调用,来减少遍历的时间。