конструктор для предоставления размера кэша. Таким образом, если вы хотите буферизовать много данных за раз, вы можете предоставить очень большой буфер, например 32 МБ.

чание: я в настоящее время кодирую в Java. Я ищу, чтобы прочитать входные данные в строку, по одной строке за раз (или более), и я ожидаю много общих строк.

Прямо сейчас я реализовал

scanner in = new Scanner(System.in)
while (in.hasNextLine()) {
    separated = in.nextLine().split(" ");
    ...
}

потому что в строке мои входы разделены пробелом.

К сожалению, с миллионами строк этот процесс ОЧЕНЬ медленный и он занимает больше времени, чем моя обработка данных, поэтому я заглянул в библиотеки java.io и нашел кучу возможностей, и я не уверен, какой из них использовать (ByteArrayInputStream, FileInputStream, BufferedInputStream, PipedInputStream). Какой из них я должен использовать?

Чтобы указать, мои данные передаются из текстового файла, каждая строка содержит 4 или 6 слов, оканчивающихся символом новой строки, и мне нужно анализировать по одной строке за раз, устанавливая (4 или 6) слов в массив которым я могу временно управлять. Формат данных:

392903840 a c b 293 32.90
382049804 a c 390
329084203 d e r 489 384.90
...

Есть ли способ, при котором сканер может считывать около 1000 строк за раз и работать эффективно, или какой из этих типов данных мне следует использовать (чтобы минимизировать скорость)?

Sidenote: во время экспериментов я попробовал:

java.io.BufferedReader stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
while(in.ready()){
    separated = in.readLine().split(" ");
    ...
}

Что сработало хорошо, просто интересно, какой из них работает лучше всего, и если есть какой-либо способ, скажем, прочитать 100 строк в данные сразу, то обработать все. Слишком много вариантов в поисках оптимального решения.

Ответы на вопрос(1)

Ваш ответ на вопрос