Java 8中Spliterator
类的用例场景是什么?
答案 0 :(得分:6)
通常,应用程序开发人员不会直接使用Spliterator
API。但是,如果您要提供API并实现自己的类似集合的类,则可以实现Spliterator
以使您的集合适应Stream
API。这支持功能方法,并行处理和其他功能。
例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。它不是真正的收藏品;也就是说,它不会同时携带内存中所有地址的列表,只包含网络号和网络掩码。但是通过公开Spliterator
,它可以很容易地适应Stream
。 (每个Spliterator
只跟踪其网络共享中的当前IP地址和最大地址。)
核心Java运行时的另一个例子是DirectoryStream
for traversing the file system.
答案 1 :(得分:3)
Spliterator
是永恒Iterator
类的扩展,它允许分割对象流以进行迭代(Stream
通过在迭代之前收集操作来工作。)
我无法想到普通开发人员何时必须与Spliterator
合作。 {8}和Collection
API在Java 8中非常丰富,在大多数情况下,您最好使用vanilla Collection
子类而不是构建自己的Stream
接口
您可能希望使用Spliterator
的示例可能是Collections
的库,使用链接数据结构,标准Spliterator
/ stream()
未定义。