Java 如何组合列表<;单声道<;字符串>&燃气轮机;大串的?
我已经创建了一个字符串Monos的列表Java 如何组合列表<;单声道<;字符串>&燃气轮机;大串的?,java,spring-boot,project-reactor,Java,Spring Boot,Project Reactor,我已经创建了一个字符串Monos的列表List myList。现在我需要将它们连接成一个大字符串 当我初始化一个StringBuilder并异步更新它时,可能会返回空行 //method body.... StringBuilder builder = new StringBuilder(); myList.forEach { mono -> mono.map{ str -> builder.append(str)} } return builder.toStr
List myList
。现在我需要将它们连接成一个大字符串
当我初始化一个StringBuilder
并异步更新它时,可能会返回空行
//method body....
StringBuilder builder = new StringBuilder();
myList.forEach {
mono ->
mono.map{ str -> builder.append(str)}
}
return builder.toString() //<- is ""
//方法体。。。。
StringBuilder=新的StringBuilder();
迈利斯特·弗雷奇{
单声道->
mono.map{str->builder.append(str)}
}
return builder.toString()//最好的方法是将Monos列表转换为Flux,然后将Flux减少为一个包含所有子字符串的字符串。然后你就有了Mono,你仍然可以异步使用它。
(如果希望保持project reactor的异步范例,您应该始终使用Mono/Flux)
例如:
List<Mono<String>> listOfMonosWithString = Arrays.asList(Mono.just("a"), Mono.just("b"), Mono.just("c"));
Flux<String> mergedMonos = Flux.fromIterable(listOfMonosWithString)
.flatMapSequential(Function.identity());
mergedMonos
.reduce(String::concat)
.doOnNext(System.out::println)
.subscribe();
List-listOfMonosWithString=Arrays.asList(Mono.just(“a”)、Mono.just(“b”)、Mono.just(“c”);
Flux mergedMonos=Flux.fromIterable(listOfMonosWithString)
.flatMapSequential(Function.identity());
梅格德蒙诺斯
.reduce(字符串::concat)
.doOnNext(System.out::println)
.subscribe();
最好的方法是将Monos列表转换为Flux,然后将Flux减少为一个包含所有子字符串的字符串。然后你就有了Mono,你仍然可以异步使用它。
(如果希望保持project reactor的异步范例,您应该始终使用Mono/Flux)
例如:
List<Mono<String>> listOfMonosWithString = Arrays.asList(Mono.just("a"), Mono.just("b"), Mono.just("c"));
Flux<String> mergedMonos = Flux.fromIterable(listOfMonosWithString)
.flatMapSequential(Function.identity());
mergedMonos
.reduce(String::concat)
.doOnNext(System.out::println)
.subscribe();
List-listOfMonosWithString=Arrays.asList(Mono.just(“a”)、Mono.just(“b”)、Mono.just(“c”);
Flux mergedMonos=Flux.fromIterable(listOfMonosWithString)
.flatMapSequential(Function.identity());
梅格德蒙诺斯
.reduce(字符串::concat)
.doOnNext(System.out::println)
.subscribe();
首先将列表
转换为单声道
。@AndyTurner我可以组合成Flux。但我不知道这是否能让我的生活更轻松。我想问题还不止于此。您似乎不了解Mono/Flux的两个关键概念。1:它们表示异步数据流。2.在你订阅之前什么都不会发生。我建议您阅读反应堆的用户指南。您订阅Mono/FLux以使其开始发射事件,并且只有在稍后发射某些事件时才会收到通知。因此,不订阅Monos和希望立即有结果是两件没有多大意义的事情@你的评论没有包含任何答案,并且对我的能力做出了毫无根据的假设。这不是毫无根据的。我只是查看了您提交的代码:它从不订阅,它假设您可以立即获得结果,而不需要阻塞。因此,合乎逻辑的结论是,您缺少关键概念,因此我要解释您的错误所在,以及如何处理。注释不是答案。首先将列表
转换为单声道
。@AndyTurner我可以组合成Flux。但我不知道这是否能让我的生活更轻松。我想问题还不止于此。您似乎不了解Mono/Flux的两个关键概念。1:它们表示异步数据流。2.在你订阅之前什么都不会发生。我建议您阅读反应堆的用户指南。您订阅Mono/FLux以使其开始发射事件,并且只有在稍后发射某些事件时才会收到通知。因此,不订阅Monos和希望立即有结果是两件没有多大意义的事情@你的评论没有包含任何答案,并且对我的能力做出了毫无根据的假设。这不是毫无根据的。我只是查看了您提交的代码:它从不订阅,它假设您可以立即获得结果,而不需要阻塞。因此,合乎逻辑的结论是,您缺少关键概念,因此我要解释您的错误所在,以及如何处理。注释不是答案。它不应该是flatMapSequantial()吗?(假设最后一个字符串中的顺序应该与monos的顺序匹配)实际上是的,我想我们关心顺序。说得好,谢谢;)它不应该是flatMapSequantial()吗?(假设最后一个字符串中的顺序应该与monos的顺序匹配)实际上是的,我想我们关心顺序。说得好,谢谢;)