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 knowFlux.merge之前
Flux<String> result = Flux.fromIterable(listOfMono)
.flatMap(Function.identity());