Когда я запускаю этот код, итератор iter
становится пустым во второй раз, когда я его использую.Я инстанцирую iter
каждый раз во внешнем цикле, но это не помогает!То есть после первой итерации длина итерируемой равна нулю!
Почему это так?И какова общая практика для этого сценария, которого мне не хватает?
String path = "somefile.csv";
try {
Reader in = new FileReader(path);
Iterable<CSVRecord> records = CSVFormat.RFC4180.withHeader(MetadataExtractorForTables.HeaderType.class)
.withDelimiter('\t').parse(in);
// A stupid loop
for(int i = 0; i < 3; i++) {
Iterator<CSVRecord> iter = records.iterator();
System.out.println("---> " + Iterators.size(iter));
System.out.println("--> " + StreamSupport.stream(records.spliterator(), false).count());
/* ----------------------------------------
* here I would like to use the iterator
* in a (nested) loop
* ---------------------------------------- */
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Вывод выглядит так:
---> 191
--> 0
---> 0
--> 0
---> 0
--> 0