2015-11-10 9 views
8

Bis zu jdk7u6 die Teilzeichenfolge-Methode was lightning fast, weil es einfach Zeiger innerhalb einer vorhandenen Zeichenfolge verwendet - so benötigt kein Speicher kopieren. Ich habe dieses Feature ausführlich bei der Implementierung von Parsern verwendet.Problemumgehung für das geänderte jdk6 zu jdk7 Verhalten der Teilzeichenfolge

Angesichts der Zeit, seit die kritische Leistungsmerkmal entfernt wurde, muss es gut geölt Ersatz sein.

Hinweis: Ich könnte theoretisch zurück gehen und die Implementierung von jdk6 kopieren. Aber IIRC war ziemlich stark in der gesamten String-Klasse verpackt - d. H. Nicht leicht zu extrahieren.

So liegt eine solche Implementierung herum - z. B. in einer der leistungsstarken jvm-Parser-Bibliotheken?

+0

Ich behalte nur einen externen Index, Aufnahme, wo wir bei der Zeichenfolge sind. – ZhongYu

+0

@ bayou.io Das löst nicht die Notwendigkeit, den Teilstring zum Beispiel in einer anderen Methode zu extrahieren und zu verwenden. – javadba

+0

übergeben Sie den Index auch an diese Methode: D ... im Grunde ersetzen alle '(String)' mit '(String, int, int)'. (Es sei denn, du kannst das nicht mit der Methode anderer Leute machen) Es ist natürlich nervtötend ... – ZhongYu

Antwort

5

Sie können möglicherweise mit CharBuffer, was die CharSequence Schnittstelle implementiert, tun, was Sie brauchen. Siehe insbesondere CharBuffer.subSequence.

+0

Mit Blick auf den Impl dafür jetzt .. CharBuffer ist einer dieser nio Jungs. Lange Zeit zurück waren sie ziemlich Schwergewicht zu instanziieren (unsicher, ob das sich geändert hatte ..) Nachdem Sie eine dann haben, würden sie die Anforderungen erfüllen. Also werde ich upvote, aber warten Sie etwas länger, um zu sehen, ob eine potenziell leichtere Alternative existiert. – javadba

Verwandte Themen