Для чтения ввода из STDIN
я всегда использовал Scanner
объект. Недавно я прочитал о BufferedInputStream
здесь , что BufferedInputStream - самый быстрый способ чтения ввода. В Scanner
у нас есть различные методы (читать integer
nextInt()
, читать byte nextByte()
, читать string next()
и т. Д.)
В настоящее время я читаю некоторые строки (не более 100000 символов) и некоторые целые числа. В соответствии с этими целыми числами я также запускаю цикл for, который получает входные данные от STDIN
. Ниже приведен фрагмент кода, который я использую до сих пор -
Scanner sc = new Scanner(System.in);
int numOfStr = sc.nextInt();
String inputStr[] = new String[numOfStr];
for (int i = 0; i < numOfStr; i++) {
inputStr[i] = sc.next();
}
}
Однако с BufferedInputStream
у нас есть только read()
для чтения ввода. Так, как я могу дифференцировать входы Может кто-нибудь записать код BufferedInputStream
, эквивалентный указанному выше Scanner
? Должен ли я использовать StringTokenizer
класс для токенизации данных, которые я получаю от read()
? Разве это не сделает весь материал (чтение ввода из STDIN
) медленнее, чем Scanner
?