如何在Iterable上执行Stream功能?

The*_*tor 32 java iterable java-8 java-stream spliterator

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

相反,我Spliterator从这里Iterable获得了,然后StreamStreamSupport这样获得一个:

boolean parallel = true;

StreamSupport.stream(spliterator(), parallel)
                .filter(Row::isEmpty)
                .collect(Collectors.toList())
                .forEach(this::deleteRow);
Run Code Online (Sandbox Code Playgroud)

是否有产生的一些其他的方式Stream上的操作Iterable,我很想念?

Sco*_*t B 36

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

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);
}
Run Code Online (Sandbox Code Playgroud)