对于 Java 8 中的 Spliterator 来说,什么是一个好的用例场景?

对于 Java 8 中的 Spliterator 类来说,什么是一个好的用例场景?


答案 1

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

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

来自核心 Java 运行时的另一个示例是用于遍历文件系统的 DirectoryStream


答案 2

用例示例:“将迭代器转换为流”

public static <T> Stream<T> iteratorToFiniteStream(final Iterator<T> iterator) {
   final Iterable<T> iterable = () -> iterator;
  return StreamSupport.stream(iterable.spliterator(), false);
}

推荐