Maison >Java >javaDidacticiel >Explication détaillée du code de Java8 StringJoiner
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!