Ja sicher.
BufferedReader br = ...
StringBuilder sb = new StringBuilder(ESTIMATED_LENGTH);
int ch;
while ((ch = br.read()) != -1 && ch != '\t') {
sb.append(ch);
}
Im besten Fall werden Sie die Leistung erhalten, die als fast so gut wie BufferedReader.readLine()
ist. Im schlimmsten Fall führst du ein bis zwei zusätzliche Kopien der Charaktere aus (denke ich) ... was nicht schlecht ist, ist ein Leistungshit .
Wenn Sie eine so gute Leistung wie BufferedReader
erzielen möchten, müssen Sie den Code BufferedReader
selbst hacken ... oder ihn neu schreiben.
(Ihr Versuch der Erweiterung BufferedReader
funktioniert nicht, weil Sie private
Methoden von der übergeordneten Klasse aufrufen. Das ist nicht erlaubt! Wenn Sie "beheben", indem Sie den Methodenzugriff ändern, dann können Sie auch nur „Klon“ der BufferedReader
Klasse und Ihre Methoden, um es hinzuzufügen natürlich Ihre Klasse ist nicht mehr ein java.io.BufferedReader
oder eine Unterklasse davon)
1 -.. die Begründung, das große Bild betrachten.Wenn Sie große Datenmengen von irgendwo lesen, ist der Leistungsengpass wahrscheinlich entweder I/O oder was Sie mit den Token tun, nachdem Sie sie gelesen haben. Wenn das nicht der Fall ist, sollten Sie wahrscheinlich 1) java.nio
/CharBuffer
, 2) einen benutzerdefinierten E/A-Stack oder 3) eine andere Programmiersprache verwenden.
Sie können Ihren BufferedReader in einen Scanner einpacken. – matt