如何在迭代器上执行流函数?

在 Java 8 中,该类没有任何方法来包装 .StreamIterable

相反,我从 中获取,然后从 中获取,如下所示:SpliteratorIterableStreamStreamSupport

boolean parallel = true;

StreamSupport.stream(spliterator(), parallel)
                .filter(Row::isEmpty)
                .collect(Collectors.toList())
                .forEach(this::deleteRow);

有没有其他方法可以在我缺少的 上生成操作?StreamIterable


答案 1

我的类似问题被标记为重复,但这是我用来避免一些样板的帮助器方法:

public static <T> Stream<T> stream(Iterable<T> in) {
    return StreamSupport.stream(in.spliterator(), false);
}

public static <T> Stream<T> parallelStream(Iterable<T> in) {
    return StreamSupport.stream(in.spliterator(), true);
}

答案 2

描述的是从迭代中获取流的方法。这就是为什么他们将 spliterator() 方法添加到 Iterable 的原因。我自己也做过同样的转换,没有看到另一种方式。

[更新]也许这个另一个答案会对“为什么”做出一些澄清。


推荐