我有一个名为 Sport 的简单 POJO 列表,它有一个名称字段。 连接列表中所有名称的最佳方法是什么?
Observable.just(member.getSports())
.map(sports -> {
StringBuilder builder = new StringBuilder();
for (Sport sport : sports) {
builder.append(sport.getName());
}
return builder.toString()
})
我相信一定有更好的方法?
最佳答案
Willi Mentzel 是对的,您不需要 Rx,但是如果您想在纯 Java 中使用它以提高可读性,这里有一个利用 Rx2 的好方法
// Get a list of sports names
Observable<String> names = Observable.fromIterable(member.getSports()).map(sport -> sport.getName())
// Concat list into a single string output separated by comma
Single<String> listOfNames = names.collect(StringBuilder::new, (sb, x) -> sb.append(x).append(", ")).map(StringBuilder::toString).toSingle()
Java 中的一行代码:
Observable.fromIterable(member.getSports()).map(sport -> sport.getName()).collect(StringBuilder::new, (sb, x) -> sb.append(x).append(", ")).map(StringBuilder::toString).toSingle()
Kotlin 与 RxKotlin 的单行代码
member.getSports().map { it.name }.toObservable().collect(StringBuilder::new, (sb, x) -> sb.append(x).append(", ")).map(StringBuilder::toString).toSingle()
产生:
volleyball, hockey, racquetball
关于rx-java2 - 使用 RxJava2 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51013032/