Java ArrayList spliterator() 方法
定义和用法
spliterator()
方法为列表返回 Spliterator
。
Spliterator
是一种特殊的迭代器。要了解如何使用迭代器,请参阅我们的 Java 迭代器教程。
Spliterator
与普通的迭代器有很大不同。Spliterator
的目的是将一个集合分成更小的部分,以便每个部分可以由单独的线程进行处理。Spliterator
接口有两个重要的方法:
trySplit()
- 返回新的Spliterator
,它可以遍历(通常且大约)原始 Spliterator 可访问元素的一半,而原始 Spliterator 可以遍历剩余的一半。tryAdvance(Consumer action)
- 移动到Spliterator
可用的下一个项,并尝试对其执行操作。如果没有下一个项,则返回 false。操作可以通过 lambda 表达式来定义。
相关页面
教程:Java 数组
教程:Java 迭代器
实例
使用 Spliterator
遍历列表中的项:
import java.util.ArrayList; import java.util.Spliterator; public class Main { public static void main(String[] args) { // 创建一个集合 ArrayList<String> cars = new ArrayList<String>(); cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); // 获取 Spliterator 并尝试分割它 Spliterator<String> it1 = cars.spliterator(); Spliterator<String> it2 = it1.trySplit(); // 使用第一个 Spliterator 遍历 System.out.println("First spliterator"); it1.forEachRemaining(System.out::println); // 使用第二个 Spliterator 遍历 System.out.println("\nSecond spliterator"); if (it2 != null) { it2.forEachRemaining(System.out::println); } } }
注意:语法 while( it1.tryAdvance( (n) -> { System.out.println(n); } ) );
等价于:
boolean x = it1.tryAdvance( (n) -> { System.out.println(n); }); while(x) { x = it1.tryAdvance( (n) -> { System.out.println(n); }); }
语法
public Spliterator spliterator()
技术细节
返回: | Spliterator 对象。 |
---|---|
Java 版本: | 1.8+ |