Konvertierung von Array zu String

Array-zu-String-Konvertierungen

1. Überblick

In diesem kurzen Lernprogramm wird die Konvertierung eines Arrays von Zeichenfolgen oder Ganzzahlen in eine Zeichenfolge und wieder zurück beschrieben.

Dies können wir mit Vanilla Java- und Java Utility-Klassen aus häufig verwendeten Bibliotheken erreichen.

2. Array in String konvertieren

Manchmal müssen wir ein Array von Zeichenfolgen oder ganzen Zahlen in eine Zeichenfolge konvertieren, aber leider gibt es keine direkte Methode, um diese Konvertierung durchzuführen.

Die Standardimplementierung dertoString()-Methode in einem Array gibt so etwas wieLjava.lang.String;@74a10858 zurück, das uns nur über den Typ und den Hash-Code des Objekts informiert.

Die Dienstprogrammklassejava.util.Arraysunterstützt jedoch die Manipulation von Arrays und Zeichenfolgen, einschließlich der MethodetoString()für Arrays.

Arrays.toString() returns a string with the content of the input array. Die neu erstellte Zeichenfolge ist eine durch Kommas getrennte Liste der Elemente des Arrays, umgeben von eckigen Klammern ("[]"):

String[] strArray = { "one", "two", "three" };
String joinedString = Arrays.toString(strArray);
assertEquals("[one, two, three]", joinedString);
int[] intArray = { 1,2,3,4,5 };
joinedString = Arrays.toString(intArray);
assertEquals("[1, 2, 3, 4, 5]", joinedString);

Und obwohl es großartig ist, dass dieArrays.toString(int[])-Methode diese Aufgabe für uns so gut verknüpft, vergleichen wir sie mit verschiedenen Methoden, die wir selbst implementieren können.

2.1. StringBuilder.append()

Schauen wir uns zunächst an, wie diese Konvertierung mitStringBuilder.append() durchgeführt wird:

String[] strArray = { "Convert", "Array", "With", "Java" };
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < strArray.length; i++) {
    stringBuilder.append(strArray[i]);
}
String joinedString = stringBuilder.toString();
assertEquals("ConvertArrayWithJava", joinedString);

Um ein Array von Ganzzahlen zu konvertieren, können wir denselben Ansatz verwenden, aber stattdessenInteger.valueOf(intArray[i]) aufrufen, wenn an unsereStringBuilder angehängt wird.

2.2. Java Streams API

Java 8 und höher bietet die MethodeString.join(), mit der eine neue Zeichenfolge erstellt wird, indem Elemente zusammengefügt und durch das angegebene Trennzeichen getrennt werden. In unserem Fall handelt es sich lediglich um eine leere Zeichenfolge:

String joinedString = String.join("", new String[]{ "Convert", "With", "Java", "Streams" });
assertEquals("ConvertWithJavaStreams", joinedString);

Darüber hinaus können wir die MethodeCollectors.joining() aus der Java Streams-API verwenden, die Zeichenfolgen ausStream in derselben Reihenfolge wie das Quellarray verknüpft:

String joinedString = Arrays
    .stream(new String[]{ "Convert", "With", "Java", "Streams" })
    .collect(Collectors.joining());
assertEquals("ConvertWithJavaStreams", joinedString);

2.3. StringUtils.join()

UndApache Commons Lang darf bei solchen Aufgaben niemals außer Acht gelassen werden.

DieStringUtils-Klasse verfügt über mehrereStringUtils.join()-Methoden, mit denen ein Array von Zeichenfolgen in eine einzelne Zeichenfolge geändert werden kann:

String joinedString = StringUtils.join(new String[]{ "Convert", "With", "Apache", "Commons" });
assertEquals("ConvertWithApacheCommons", joinedString);

2.4. Joiner.join()

Und um nicht übertroffen zu werden, bietetGuava mit seinerJoiner -Skala dasselbe. DieJoiner -Skala bietet eine fließende API und eine Handvoll Hilfsmethoden zum Verknüpfen von Daten.

Beispielsweise können wir einen Begrenzer hinzufügen oder Nullwerte überspringen:

String joinedString = Joiner.on("")
        .skipNulls()
        .join(new String[]{ "Convert", "With", "Guava", null });
assertEquals("ConvertWithGuava", joinedString);

3. String in Array von Strings konvertieren

In ähnlicher Weise müssen wir manchmal eine Zeichenfolge in ein Array aufteilen, das eine Teilmenge der Eingabezeichenfolge enthält, die durch das angegebene Trennzeichen geteilt wird. Lassen Sie uns sehen, wie wir dies auch tun können.

3.1. String.split()

Beginnen wir zunächst mit der Aufteilung des Leerzeichens mit der MethodeString.split()ohne Trennzeichen:

String[] strArray = "loremipsum".split("");

Welches produziert:

["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]

3.2. StringUtils.split()

Lassen Sie uns zweitens noch einmal dieStringUtils-Klasse aus der Commons Lang-Bibliothek von Apache betrachten.

Unter vielen null-sicheren Methoden für Zeichenfolgenobjekte finden wirStringUtils.split().. Standardmäßig wird ein Leerzeichen-Trennzeichen angenommen:

String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");

Was in ... endet:

["lorem", "ipsum", "dolor", "sit", "amet"]

Wir können aber auch ein Trennzeichen angeben, wenn wir möchten.

3.3. Splitter.split()

Schließlich können wir auchGuava mit der fließenden APISplitter verwenden:

List resultList = Splitter.on(' ')
    .trimResults()
    .omitEmptyStrings()
    .splitToList("lorem ipsum dolor sit amet");
String[] strArray = resultList.toArray(new String[0]);

Welches erzeugt:

["lorem", "ipsum", "dolor", "sit", "amet"]

4. Fazit

In diesem Artikel wurde veranschaulicht, wie ein Array mit Java-Kernbibliotheken und gängigen Hilfsprogrammbibliotheken in Zeichenfolgen konvertiert wird.

Natürlich kann die Implementierung all dieser Beispiele und Codefragmenteover on GitHub gefunden werden.