Um String zu einem großen Ergebnis zusammenzuhängen gibt es mehrere Möglichkeiten: Zum einen der Plus-Operator, zum anderen StringBuilder/StringBuffer. Doch es geht noch ein bisschen einfacher, Teilstrings zu einem Gesamtstring zusammenzubauen. String bietet zum einen die praktische Hilfsmethode join(…). Dahinter steht eine kleine Klasse StringJoiner, die auch direkt genutzt werden kann:
StringJoiner sj = new StringJoiner( „, “ );
sj.add( „1“ ).add( „2“ ).add( „3“ );
System.out.println( sj.toString() ); // 1, 2, 3
Der Join-String ist vom Typ einer CharSequence und ist der Delimiter. Er wird zwischen jedes Element gesetzt, was hinzugefügt wurde. Die im Beispiel eingesetzte Methode add(CharSequence) nimmt ein CharSequence an und liefern den aktuellen StringJoiner zurück, sodass sich die add(…)-Aufrufe kaskadieren lassen. Mit der Methode merge(StringJoiner) lässt sich der Inhalt eines andere StringJoiner integrieren.
Zusammenhängen mit Infix, Prefix und Suffix
Nicht nur das Trennzeichen selbst lässt sich angeben, sondern auch ein Startzeichen und Endzeichen. Wenn etwa die Ausgabe vorne mit einem “{“ beginnen und hinten mit einem “}” enden soll, heißt es:
StringJoiner sj = new StringJoiner( „, „, „{„, „}“ );
Nichts zum Zusammenhängen gegeben
Es kommt vor, dass dem StringJoiner nichts zum Zusammenfügen gegeben wird. Dann wird er dennoch Präfix und Suffix einsetzen.
StringJoiner sj = new StringJoiner( „, „, „{„, „}“ );
System.out.println( sj.toString() ); // {}
Ist das unerwünscht, gibt setEmptyValue(CharSequence) ein Substitut an, das genau dann zum Zuge kommt, wenn kein add(…) etwas zum StringJoiner zufügte:
StringJoiner sj = new StringJoiner( „, „, „{„, „}“ ).setEmptyValue(„<nix>“);
System.out.println( sj.toString() ); // <nix>
Zusammenfassend bietet die Klasse zwei Konstruktoren und fünf Methoden:
class java.util.StringJoiner
§ StringJoiner(CharSequence delimiter)
§ StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
§ StringJoiner add(CharSequence newElement)
§ StringJoiner merge(StringJoiner other)
§ StringJoiner setEmptyValue(CharSequence emptyValue)
§ int length()
§ String toString()