Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何组合列表<;单声道<;字符串>&燃气轮机;大串的?_Java_Spring Boot_Project Reactor - Fatal编程技术网

Java 如何组合列表<;单声道<;字符串>&燃气轮机;大串的?

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

我已经创建了一个字符串Monos的列表
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的顺序匹配)实际上是的,我想我们关心顺序。说得好,谢谢;)