eri*_*son 6

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

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

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


Kar*_*ról 6

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

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