Maison  >  Article  >  Java  >  Explication détaillée du code de Java8 StringJoiner

Explication détaillée du code de Java8 StringJoiner

黄舟
黄舟original
2017-03-24 11:02:091777parcourir

Enfin, Java 8 publie la classe StringJoiner sous le package java.util. Je ne pense pas qu'il s'agisse d'une implémentation radicalement différente de notre approche à l'ancienne consistant à utiliser StringBuffer/StringBuilder pour concaténer des chaînes. Jetons un coup d'œil à l'utilisation de StringJoiner et à son implémentation interne.

Par exemple, j'ai deux chaînes appelées "Smart" et "Techie", et je souhaite concaténer ces chaînes dans [Smart,Techie]. Dans ce cas, mon préfixe est "[", le suffixe est "]" et le délimiteur est ",". StringJoiner a les deux constructeurs suivants.

StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

Nous voulons avoir des préfixes et des suffixes, utilisez donc le deuxième constructeur dans l'exemple.

StringJoiner sjr = new StringJoiner(",", "[", "]");
sjr.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr);

Si nous ne voulons pas avoir de préfixe et de suffixe, alors juste :

sjr1.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr1);

Maintenant, nous verrons l'implémentation des méthodes add et toString().

public StringJoiner add(CharSequence newElement) {
   prepareBuilder().append(newElement);
   return this;
}

prepareBuilder() est implémenté comme suit.

private StringBuilder prepareBuilder() {
    if (value != null) {
       value.append(delimiter);
    } else {
       value = new StringBuilder().append(prefix);
    }
    return value;
}

D'après l'implémentation ci-dessus, il est évident que StringJoiner suit l'approche à l'ancienne.

toString() est implémenté comme suit.

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;
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn