对于Java8中的拆分器,什么是一个好的用例场景?

对于Java8中的拆分器,什么是一个好的用例场景?,java,data-structures,iterator,java-8,spliterator,Java,Data Structures,Iterator,Java 8,Spliterator,Java 8中类的一个好用例场景是什么?Spliterator是永恒的迭代器类的一个扩展,它允许拆分要迭代的对象流(流通过在迭代之前收集操作来工作) 我想不出任何时候普通的开发人员都必须使用Spliterator。Java 8中的和API极其丰富,在大多数情况下,最好使用普通的集合子类,而不是构建自己的流接口 您可能希望使用Spliterator的一个示例可能是使用链接数据结构的库,其中标准Spliterator/stream()未定义。通常,应用程序开发人员不会直接使用SpliteratorA

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

Spliterator
是永恒的
迭代器
类的一个扩展,它允许拆分要迭代的对象流(
通过在迭代之前收集操作来工作)

我想不出任何时候普通的开发人员都必须使用
Spliterator
。Java 8中的和API极其丰富,在大多数情况下,最好使用普通的
集合
子类,而不是构建自己的
接口


您可能希望使用
Spliterator
的一个示例可能是使用链接数据结构的库,其中标准
Spliterator
/
stream()
未定义。

通常,应用程序开发人员不会直接使用
Spliterator
API。但是,如果您提供了一个API,并实现了自己的类集合,那么您可以实现
Spliterator
,以使您的集合适应
API。这支持功能方法、并行处理和其他特性

例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。这不是一个真正的收藏;也就是说,它不会同时携带内存中所有地址的列表,只有网络号和网络掩码。但是通过公开
拆分器
,它可以很容易地适应
。(每个
Spliterator
只跟踪当前IP地址和其网络份额中的最大地址。)

核心Java运行时的另一个示例是用例示例:“将迭代器转换为流”

公共静态流迭代器of initestream(最终迭代器迭代器){
最终Iterable Iterable=()->迭代器;
返回StreamSupport.stream(iterable.spliterator(),false);
}

Spliterator,而不是SplitIterator.:-)我发现了这些问题,它们似乎与拆分器相关。流是由拆分器构建的。因此,每当您希望从集合创建流时,都需要提供拆分器
Spliterator
不扩展
Iterator
@erickson我不是指继承。它延续了迭代器的概念。
public static <T> Stream<T> iteratorToFiniteStream(final Iterator<T> iterator) {
   final Iterable<T> iterable = () -> iterator;
  return StreamSupport.stream(iterable.spliterator(), false);
}