1

我想使用 Java Stream API 将文本行列表写入 csv。但是,我可以构建并过滤掉需要写入写入器流的行。但是我使用 CSVWriter 写行的部分并不是很流式的。我应该如何重新编写代码?

import au.com.bytecode.opencsv.CSVWriter;

public static void export(List<List<String>> data, Writer w) throws Exception{

    CSVWriter writer = new CSVWriter(w);    

    Stream.of(data)
        .filter(CollectionUtils::isNotEmpty)
        .forEach(row -> {
            writer.writeNext(row.toArray(new String[row.size()]));
        });

    w.flush();
}
4

1 回答 1

3

也许这样的事情会更“流畅”:

data.stream()
     .filter(CollectionUtils::isNotEmpty)
     .map(row -> row.toArray(new String[row.size()]))
     .forEach(writer::writeNext);

老实说,我只会使用 for 循环。

for (List<String> row : data) {
  if (Collections.isEmpty(row)) continue;
  writer.write(row.toArray(new String[row.size()]));
}
于 2019-06-05T07:44:34.397 回答