Поток, созданный из CsvtoBean, заканчивается после одного элемента - PullRequest
0 голосов
/ 28 мая 2018

Я использую OpenCSV для чтения csv-файлов и хотел бы обработать данные с помощью Streams.Однако на сайте OpenCSV говорится, что «они не будут использовать Java 8 в течение многих лет».Поэтому я предполагаю, что нужно исправить часть Stream самостоятельно.

Я могу заставить OpenCSV сразу проанализировать весь csv-файл в List, а затем создать поток из этого List.Это прекрасно работает, но я предпочитаю, чтобы OpenCSV анализировал одну строку, когда потоку это действительно нужно.Поэтому я решил использовать:

CsvToBean<DataElement> elements = new CsvToBeanBuilder<DataElement>(...).withType(DataElement.class).build();
Stream<DataElement> s = StreamSupport.stream(elements.spliterator(), false);

Где CsvToBean реализует Iterable.Но поток всегда заканчивается только после одного элемента.Я не могу понять, почему.Кто-нибудь знает?

Заранее спасибо.

1 Ответ

0 голосов
/ 15 июня 2018

Попробуйте вместо этого использовать IterableCSVToBean, а затем посмотрите, сможете ли вы преобразовать итератор в поток в вашем коде Java 8.

...