我相信你不应该在失败后走得更远。
拆分器停止其工作并且不再迭代元素。即使还有剩余的元素。
特定元素的异常forEachRemaining
意味着整个组的计算结束。
遍历和拆分排气元件;每个 Spliterator 仅对单个批量计算有用。
一个如何Spliterators.ArraySpliterator
处理这个的例子。
Spliterator<String> spliterator = Arrays.asList("a", "b", "c").spliterator();
System.out.println(spliterator.estimateSize());
try {
spliterator.forEachRemaining(s -> {
if (s.equals("b")) {
throw new IllegalArgumentException();
}
System.out.println(s);
});
} catch (IllegalArgumentException e) {}
System.out.println(spliterator.estimateSize());
spliterator.forEachRemaining(System.out::println);
3
a
0
AFAIK,大多数Spliterator
基于集合/数组的 s 都以这种方式工作。