前言
研讀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)分割然后起多線程調用,來減少遍歷的時間。