如何在 Java 中平面映射流的流? [重复]

问题描述 投票:0回答:1

我想将对象流转换为单个对象流。我知道我必须使用

flatMap
方法,但我无法实现这一点,请看:

Stream<Stream<Object>> objectStreams = ...
Stream<Object> flatMappedStream = objectStreams.flatMap( ... );

有人可以帮助我吗?

java java-8 java-stream
1个回答
130
投票

基本上,您希望将所有嵌套流连接成一个扁平流,而不影响成员本身。你会用

objectStreams.flatMap(Function.identity());

因为您必须为每个流成员提供some映射函数,在本例中它是恒等函数。


通常我们最终会得到嵌套流,因为我们应用了一个将项目映射到流的函数:

Stream<Stream<Object>> objectStreams = srcStream.map(itemToStreamFunction);

如果您的情况如此,只需将

map
更改为
flatMap
:

Stream<Object> flatMappedStream = srcStream.flatMap(itemToStreamFunction);
© www.soinside.com 2019 - 2024. All rights reserved.