Observable<List<String>> listOfCsvValues = Observable.just(["id", "name"], [2, "messi"], ...)
我可能会使用以下构造,但它会创建一些临时缓冲区(每个String.join()
基本上会在最后调用buffer.toString()
):
.map(values -> String.join(",", values))
.toList()
.map(records -> String.join("\n", records));
我真正想要的只是拥有一个巨大的缓冲区。
答案 0 :(得分:1)
收集它:
listOfCsvValues
.collect(() -> new StringBuilder(),
(builder, list) -> {
if (builder.length() > 0) {
builder.append('\n');
}
boolean separate = false;
for (Object o : list) {
if (separate) {
builder.append(',');
} else {
separate = true;
}
builder.append(o);
}
}
)
.map(Object::toString)