Konvertieren einer Liste in Java in String

Konvertieren einer Liste in einen String in Java

1. Einführung

In diesem kurzen Artikel sehen wir uns an, wie SieList von Elementen inString konvertieren. Dies kann in bestimmten Szenarien nützlich sein, z. B. beim Drucken des Inhalts in einer für Menschen lesbaren Form zur Überprüfung / Fehlerbehebung auf der Konsole.

2. StandardtoString() aufList

Eine der einfachsten Möglichkeiten besteht darin, einfach dietoString()-Methode fürList aufzurufen:

@Test
public void whenListToString_thenPrintDefault() {
    List intLIst = Arrays.asList(1, 2, 3);

    System.out.println(intLIst);
}

Ausgabe:

[1, 2, 3]

Diese Technik verwendet intern dietoString()-Methode des Typs der Elemente innerhalb derList. In unserem Fall verwenden wir den TypInteger, der die MethodetoString() ordnungsgemäß implementiert.

Wenn wir unseren benutzerdefinierten Typ verwenden, z. B.Person, müssen wir sicherstellen, dass die KlassePersondie MethodetoString()überschreibt und sich nicht auf die Standardimplementierung stützt. Wenn dietoString()-Methode nicht ordnungsgemäß implementiert ist, erhalten Sie möglicherweise unerwartete Ergebnisse:

[[email protected],
  [email protected],
  [email protected]]

3. Benutzerdefinierte Implementierung mitCollectors

Oft müssen wir die Ausgabe in einem anderen Format anzeigen.

Im Vergleich zum vorherigen Beispiel ersetzen wir das Komma (,) durch einen Bindestrich (-) und die eckigen Klammern ([,]) durch eine Reihe geschweifter Klammern (\ {,}):

@Test
public void whenCollectorsJoining_thenPrintCustom() {
    List intList = Arrays.asList(1, 2, 3);
    String result = intList.stream()
      .map(n -> String.valueOf(n))
      .collect(Collectors.joining("-", "{", "}"));

    System.out.println(result);
}

Ausgabe:

{1-2-3}

DieCollectors.joining()-Methode erfordertCharSequence, also müssen wirmap dieInteger bisString. Die gleiche Idee kann für jede andere Klasse verwendet werden, auch wenn wir keinen Zugriff auf den Code dieser Klasse haben.

4. Verwenden einer externen Bibliothek

Wir werden jetzt die Verwendung derStringUtils-Klasse von Apache Commons sehen, um ähnliche Ergebnisse zu erzielen.

4.1. Maven-Abhängigkeit


    org.apache.commons
    commons-lang3
    3.6

Die neueste Version der Abhängigkeit befindet sich inhere.

4.2. Implementierung

Die Implementierung ist buchstäblich ein einzelner Methodenaufruf:

@Test
public void whenStringUtilsJoin_thenPrintCustom() {
    List intList = Arrays.asList(1, 2, 3);

    System.out.println(StringUtils.join(intList, "|"));
}

Ausgabe:

1|2|3

Auch diese Implementierung hängt intern von dertoString()-Implementierung des von uns betrachteten Typs ab.

5. Fazit

In diesem Artikel haben wir gesehen, wie einfach es ist,List mit verschiedenen Techniken inString umzuwandeln.

Wie immer finden Sie den vollständigen Quellcode für diesen Artikel inover on GitHub.