Я пытаюсь прочитать очень большой файл с потоками, поэтому мне нужны параллельные потоки, а не итерации на строку ... Я пытаюсь сделать следующее:
String cont = new String(Files.readAllBytes(Paths.get(this.File_Path)),
StandardCharsets.UTF_8);
List<String> words = Arrays.asList(cont.split("\\PL+"));
yep = words.parallelStream()
.filter(x -> x.contains(toMatch))
.distinct()
.collect(Collectors.toList());
Это работает для небольшого размера файла, но если я пытаюсь сделать то же самое с файлом, размер которого составляет несколько гигабайт, java выдает мне следующее исключение:
java.lang.OutOfMemoryError: Required array size too large
Есть способ избежать этого исключения, но одновременно использовать параллельный поток вместо итерации с BufferReader или Scanner?