Я читаю один CSV-файл (размер составляет приблизительно 700 МБ с 103415834 строками) и пытаюсь получить все строки, имеющие определенные значения.Я могу получить строку, если в ней всего 1 запись, но нет, если в ней более 1 записи.Ниже приведен мой код, который отлично работает для 1 записи.
try (Stream<String> stream = Files.lines(Paths.get(IN_FILE_PATH))) {
int nameIndex = columns.indexOf("Rate");
Stream<String> stream1 = Files.lines(Paths.get(IN_FILE_PATH));
List<List<String>> values = stream1
.skip(1)
.map((line) -> Arrays.asList(line.split(",")))
.filter(list -> list.get(nameIndex).equals("25"))
.collect(Collectors.toList());
System.out.println(values.size());
values.forEach((l) -> System.out.println(l));
} catch (IOException e1) {
e1.printStackTrace();
}
И пример строки для файла CSV, пытающегося выполнить синтаксический анализ, приведен ниже:
MD,URN,PremiseType,Rate,OHP 09022,null,Residential,14,null 38329,1428275,Residential,14,null 38742,563459,Single,21,111