Java 8中Spliterator的一个很好的用例场景是什么?

时间:2014-07-09 18:26:11

标签: java data-structures iterator java-8 spliterator

Java 8中Spliterator类的用例场景是什么?

2 个答案:

答案 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()未定义。