在Java 8中,Spliterator
类有哪些好的使用场景?
在Java 8中,Spliterator
类有哪些好的使用场景?
使用案例示例:"将迭代器转换为流"
public static <T> Stream<T> iteratorToFiniteStream(final Iterator<T> iterator) {
final Iterable<T> iterable = () -> iterator;
return StreamSupport.stream(iterable.spliterator(), false);
}
Spliterator
API。但如果您提供API并实现自己的类似集合的类,则可以实现Spliterator
以使您的集合适应Stream
API。这支持功能方法、并行处理和其他特性。Spliterator
,它可以轻松地适应Stream
。(每个Spliterator
仅跟踪其所在网络部分的当前IP地址和最大地址。)DirectoryStream
。Spliterator
是Iterator
类的扩展,允许对对象流进行分割以进行迭代(Stream
通过在迭代之前收集操作来工作)。
我想不出一般开发者需要使用Spliterator
的情况。Java 8中的Collection
和Collections
API非常丰富,在大多数情况下,您最好使用普通的Collection
子类而不是构建自己的Stream
接口。
您可能希望使用Spliterator
的一个例子是使用链接数据结构的图形库,其中标准的Spliterator
/stream()
未定义。
Spliterator
并不继承Iterator
。 - erickson