String.join () vs andere String-Verkettungsoperationen

8

Ich habe die Java8 String api Dokumentation schnell gelesen.

Jetzt bin ich ein bisschen neugierig auf die String.join () -Methode, um Zeichenketten zu erstellen / zu verbinden.

Diese Art von Beispiel hat mir jedoch geholfen, besser zu verstehen:

%Vor%

Dennoch verstehe ich nicht, welchen ich verwenden soll. Gibt es irgendwelche Leistungs-oder andere Unterschiede zwischen diesen beiden Prozessen.

Jede Hilfe würde sehr geschätzt werden.

    
Ankur Mahajan 04.08.2015, 19:08
quelle

2 Antworten

14

String.join basiert auf der Klasse StringJoiner , die selbst beruht auf einem internen StringBuilder , um die verbundene Zeichenfolge zu erstellen.

Es ist also leistungsmäßig ähnlich wie die Verwendung von StringBuilder und Anhängen an es oder die Verwendung einer Kette von + (die heutzutage vom Compiler in StringBuilder -Operationen konvertiert werden).

Aber die Bedeutung von String.join ist kein allgemeiner Ersatz für + oder String.concat , sondern die "umgekehrte Operation" einer Operation String.split . Es macht mehr Sinn in diesem Kontext - wenn Sie eine Reihe von Strings haben, die Sie mit einem Trennzeichen verbinden möchten - als Ersatz für concat .

Das heißt, eine Ausgabe wie "a/b/c/d" oder "(a+b+c+d)" zu erstellen, wenn Sie a , b , c und d in einem Array oder einer Liste, String.join oder% co_de haben % würde die Operation klar und lesbar machen.

    
RealSkeptic 04.08.2015, 19:22
quelle
1

str1 + " " + str2 wird intern in Folgendes konvertiert:

%Vor%

str1.concat(str2) wird nicht das selbe Ergebnis erzeugen, da das Leerzeichen zwischen den beiden Zeichenfolgen nicht vorhanden ist.

join sollte äquivalent zu

sein %Vor%

und daher schneller sein.

    
Roberto Attias 04.08.2015 19:20
quelle

Tags und Links