Schließlich veröffentlicht Java 8 die StringJoiner-Klasse unter dem Paket java.util. Ich glaube nicht, dass dies eine radikal andere Implementierung ist als unser altmodischer Ansatz, StringBuffer/StringBuilder zum Verketten von Strings zu verwenden. Werfen wir einen Blick auf die Verwendung von StringJoiner und seine interne Implementierung.
Zum Beispiel habe ich zwei Zeichenfolgen namens „Smart“ und „Techie“ und möchte diese Zeichenfolgen zu [Smart,Techie] verketten. In diesem Fall ist mein Präfix „[“, das Suffix „]“ und das Trennzeichen „“,. StringJoiner verfügt über die folgenden zwei Konstruktoren .
StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Wir möchten Präfixe und Suffixe haben, also verwenden Sie den zweiten Konstruktor im Beispiel.
StringJoiner sjr = new StringJoiner(",", "[", "]"); sjr.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr);
Wenn wir kein Präfix und Suffix haben möchten, dann gehen Sie einfach wie folgt vor:
sjr1.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr1);
Jetzt sehen wir uns die Implementierung der Methoden add und toString() an.
public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; }
prepareBuilder() wird wie folgt implementiert.
private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; }
Aus der obigen Implementierung ist ersichtlich, dass StringJoiner dem altmodischen Ansatz folgt.
toString() wird wie folgt implementiert.
public String toString() { if (value == null) { return emptyValue; } else { if (suffix.equals("")) { return value.toString(); } else { int initialLength = value.length(); String result = value.append(suffix).toString(); // reset value to pre-append initialLength value.setLength(initialLength); return result; } }
Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung von Java8 StringJoiner. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!