将流列表合并为一个流

1 java concatenation java-stream

我有一个List<Stream<String>>通过一系列交易得到的。列表大小是动态的(最多 3 个元素),所以我不能这样做:

Stream<String> finalStream = Stream.concat(list.get(0),Stream.concat(list.get(1),list.get(2));
Run Code Online (Sandbox Code Playgroud)

我需要将 Streams 列表连接成一个Stream<String>. 有什么简单的方法可以做到这一点吗?

kni*_*ttl 6

如果您有一个列表的列表,或者一个流的流,或者任何集合的集合,您可以使用flatMap它们来展平它们。flatMap应用映射函数,该函数必须将流返回到输入,并流式传输映射函数结果的每个元素。

对于你的情况,你可以这样做:

var finalStream = list.stream().flatMap(x -> x);
Run Code Online (Sandbox Code Playgroud)

x -> x是返回未修改的输入的识别函数。如果您愿意,可以将其替换为表达式Function.identity()