0

Vor kurzem habe ich meinen Code geändertLeistung Maß für BufferedReader Vs BufferedInputStream

  • Während Eingabeformular STDIN nehmen, zog ich von Scanner zu BufferedInputStream.
  • Ich lese auch über BufferedReader, die die Eingabe von jedem InputStreamReader nimmt. Diese InputStreamReader kann mit System.in verwendet werden, um STDIN Eingang zu nehmen.
  • BufferedInputStream hat read() Methode, die weiter nach dem Ziel analysiert werden muss.

In meinem Fall zuerst muss ich eine ganze Zahl nehmen (lassen n sagen) als Eingabe von STDIN danach ein for loop wird als Eingabe n Strings. Diese Strings haben maximal 1,00,000 Zeichen.

Frage ist: Welche von Scanner, BufferedInputStream und BufferedReader führt besser für mein Ziel?

+0

Haben Sie jeden Ansatz ausprobiert? Der einfachste Weg, um herauszufinden, was besser ist, ist das Schreiben von Prototyp-Programmen und deren Performance-Tests. – beny23

Antwort

2

Scanner wurde entwickelt, um die Akzeptanz von Eingabeparametern zur Laufzeit vom Benutzer zu vereinfachen. Dies ist das Java-Äquivalent von scanf()/getc()/cin. Die 'Reader's werden zum Lesen von Zeichendaten verwendet,' Stream's für gestreamte Daten. Scanner ist am besten für Ihren Zweck geeignet. Es ist einfach zu programmieren und zu verwenden.

1

Ich würde einen BufferedReader in Ihrem Fall verwenden. Es wird viel schneller als Scanner sein, da Ihre Strings ziemlich viele Zeichen haben.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

//To get an integer 
int N = Integer.parseInt(br.readLine()); 

//To get a string. 
String line = br.readLine()