Konvertierungen von Array zu String

1. Übersicht

In diesem kurzen Tutorial werden wir uns mit der Konvertierung eines Arrays von Zeichenfolgen oder Ganzzahlen in eine Zeichenfolge und wieder zurück befassen.

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

2. Konvertieren Sie das Array in einen String

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

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

Die Dienstprogrammklasse java.util.Arrays unterstützt jedoch die Manipulation von Arrays und Zeichenfolgen, einschließlich einer toString () -Methode für Arrays.

Arrays.toString () gibt eine Zeichenfolge mit dem Inhalt des Eingabearrays zurück. 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 die Arrays.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 mit StringBuilder.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 stattdessen Integer.valueOf (intArray [i]) aufrufen, wenn wir an unseren StringBuilder anhängen .

2.2. Java Streams API

Java 8 und höher bietet die String.join () -Methode, die eine neue Zeichenfolge erzeugt, indem Elemente verbunden 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 Collectors.joining () -Methode aus der Java Streams-API verwenden, die Zeichenfolgen aus dem Stream 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 ()

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

Die StringUtils- Klasse verfügt über mehrere StringUtils.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, bietet Guava mit seiner Joiner- Klasse dasselbe . Die Joiner- Klasse bietet eine fließende API und eine Handvoll Hilfsmethoden zum Verknüpfen von Daten.

Zum Beispiel können wir ein Trennzeichen hinzufügen oder Nullwerte überspringen:

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

3. Konvertieren Sie einen String in ein Array von Strings

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 mithilfe der String.split () -Methode 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 die StringUtils- Klasse aus Apaches Commons Lang-Bibliothek betrachten.

Unter vielen null-sicheren Methoden für String-Objekte finden wir StringUtils.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 auch Guava mit seiner fließenden Splitter- API verwenden:

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

Was erzeugt:

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

4. Fazit

In diesem Artikel haben wir gezeigt, wie ein Array mithilfe von Java-Kernbibliotheken und gängigen Dienstprogrammbibliotheken in Zeichenfolgen und wieder zurück konvertiert wird.

Die Implementierung all dieser Beispiele und Codefragmente finden Sie natürlich auf GitHub.