如何在Java中平面映射流?

win*_*rrr 34 java java-8 java-stream

我想将对象流的流转换为单个对象流.我知道我必须使用这种flatMap方法,但我无法实现这一点,请看:

Stream<Stream<Object>> objectStreams = ...
Stream<Object> flatMappedStream = objectStreams.flatMap( ... );
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

Mar*_*nik 65

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

objectStreams.flatMap(Function.identity());
Run Code Online (Sandbox Code Playgroud)

因为你必须为每个流成员提供一些映射函数,在这种情况下它是身份函数.

  • 如果您的 Stream&lt;Stream&lt;Object&gt;&gt; 源自之前的 .map 调用,您只需将该 .map() 更改为 .flatMap() 即可。那么你就不需要这个 Function.identity() 东西了。 (17认同)