Java 转换列表<;单声道<;字符串>&燃气轮机;流动<;字符串>;

Java 转换列表<;单声道<;字符串>&燃气轮机;流动<;字符串>;,java,spring-boot,spring-webflux,project-reactor,Java,Spring Boot,Spring Webflux,Project Reactor,有几个问题,但有答案是非常具体的一些代码 一般来说,如何将单声道流转换为通量 List<Mono<String> listOfMono = stream() .map( s -> { do something and return Mono<String> } ) .collect(Collectors.toList()); List{do something and return Mono}) .collect(Collectors.toList());

有几个问题,但有答案是非常具体的一些代码

一般来说,如何将单声道流转换为通量

List<Mono<String> listOfMono = stream()
.map( s -> { do something and return Mono<String> } )
.collect(Collectors.toList());
List{do something and return Mono})
.collect(Collectors.toList());
如何将
listOfMono
对象转换为
Flux
您可以使用,然后使用来展平
Mono

将此流量发出的元素异步转换为发布服务器,然后通过合并将这些内部发布服务器扁平化为单个流量,从而允许它们交错

Flux结果=Flux.fromIterable(listOfMono)
.flatMap(Function.identity());

如果您的输入是MONO列表,您只需执行以下操作:

Flux.merge(listOfMono);
如果您的输入是流,您可以

stream()
.map(s->{do something and return Mono})
.collect(Collectors.collectingAndThen(Collectors.toList(),Flux::merge));

Flux.fromStream(stream())
.flatMap(s->{do something and return Mono})

我个人更喜欢最后一个选项,因为这是最严格、最惯用的方法。

是否有一种内联解决方案,比如我可以继续管道而不是将其提取到变量?在流式传输列表之前?你能告诉我输入集合吗?我的意思是在更改为
MonoGood to know
Flux.merge之前
Flux<String> result = Flux.fromIterable(listOfMono)
            .flatMap(Function.identity());