如何在 Iterable 上执行 Stream 函数? [英] How to perform Stream functions on an Iterable?

查看:21
本文介绍了如何在 Iterable 上执行 Stream 函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In Java 8, the Stream class does not have any method to wrap a an Iterable.

相反,我从 Iterable 获取 Spliterator,然后像这样从 StreamSupport 获取 Stream:

Instead, I am obtaining the Spliterator from the Iterable and then obtaining a Stream from StreamSupport like this:

boolean parallel = true;

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

是否有其他方法可以在我缺少的 Iterable 上生成 Stream 操作?

Is there some other way of generating Stream operations on an Iterable that I am missing?

推荐答案

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

My similar question got marked as duplicate, but here is the helper methods I've used to avoid some of the boilerplate:

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);
}

这篇关于如何在 Iterable 上执行 Stream 函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆