Heim >Java >javaLernprogramm >Detaillierte Code-Erklärung von Java8 StringJoiner

Detaillierte Code-Erklärung von Java8 StringJoiner

黄舟
黄舟Original
2017-03-24 11:02:091807Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn