Лучший метод для записи текста построчно с помощью Java Stream API? - PullRequest
1 голос
/ 05 июня 2019

Я хотел бы выписать список строк текста в CSV, используя Java Stream API.Тем не менее, я могу построить и отфильтровать строки, которые должны быть записаны в поток записи.Но часть, которую я использую CSVWriter для написания строки, не совсем в стиле Stream.Как мне переписать код?

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();
}

1 Ответ

3 голосов
/ 05 июня 2019

Возможно, что-то вроде этого было бы более "потоковым":

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()]));
}
...