java - 如何组合列表> 在一个大字符串中?
问题描述
我创建了一个 String Monos 列表List<Mono<String>> myList
。现在我需要将它们连接成一个大字符串。
当我初始化 aStringBuilder
并异步更新它时,可能会返回空行。
//method body....
StringBuilder builder = new StringBuilder();
myList.forEach {
mono ->
mono.map{ str -> builder.append(str)}
}
return builder.toString() //<- is ""
我怎样才能让建造者等待单声道?
解决方案
最好的方法是将 Monos List 转换为 Flux,然后减少你的 Flux 以拥有一个包含所有子字符串的字符串。然后你就有了 Mono ,你仍然可以以异步方式使用它。(如果您想与项目反应器保持异步范式,您应该始终使用 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();
推荐阅读
- c# - C# LINQ 根据 List 将行分成两行
财产 - python - 以不同的方式初始化参数给了我相同的属性错误
- go - 如何将标志值传递给golang urfave cli中的子命令
- coq - 学习coq,不知道错误是什么意思 NNPP
- java - 我现在只创建一个 ArrayList 我需要测试
- vba - 使用 Excel VBA 在 Word 中删除项目符号段落
- autohotkey - 如何实现对密钥的最低访问级别?
- c# - 建立错误时发生与网络相关或特定于实例的错误:26
- android - how to make animation like notification drawer icon movement and size change during drag down in android
- python - 在python的守护线程中运行对象方法