Conversion d’une liste en chaîne en Java

Conversion d'une liste en chaîne en Java

1. introduction

Dans cet article rapide, nous allons voir comment convertir unList d'éléments en unString. Cela peut être utile dans certains scénarios, tels que l'impression du contenu sur la console sous une forme lisible par l'homme pour l'inspection / le débogage.

2. toString() standard sur unList

L'un des moyens les plus simples est d'appeler simplement la méthodetoString() sur lesList:

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

    System.out.println(intLIst);
}

Sortie:

[1, 2, 3]

Cette technique utilise en interne la méthodetoString() du type des éléments dans lesList. Dans notre cas, nous utilisons le typeInteger qui a une implémentation correcte de la méthodetoString().

Si nous utilisons notre type personnalisé, disonsPerson, nous devons nous assurer que la classePerson remplace la méthodetoString() et ne repose pas sur l'implémentation par défaut. Si la méthodetoString() n'est pas correctement implémentée, vous pouvez obtenir des résultats inattendus:

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

3. Implémentation personnalisée à l'aide deCollectors

Souvent, nous pouvons avoir besoin d'afficher la sortie dans un format différent.

Par rapport à l'exemple précédent, remplaçons la virgule (,) par un tiret (-) et les crochets ([,]) par un ensemble d'accolades (\ {,}):

@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);
}

Sortie:

{1-2-3}

La méthodeCollectors.joining() nécessite unCharSequence, nous devons doncmap lesInteger àString. La même idée peut être utilisée dans le cas de toute autre classe, même si nous n'avons pas accès au code de cette classe.

4. Utilisation d'une bibliothèque externe

Nous allons maintenant voir l'utilisation de la classeStringUtils d'Apache Commons pour obtenir des résultats similaires.

4.1. Dépendance Maven


    org.apache.commons
    commons-lang3
    3.6

La dernière version de la dépendance peut être trouvéehere.

4.2. la mise en oeuvre

L'implémentation est littéralement un appel de méthode unique:

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

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

Sortie:

1|2|3

Encore une fois, cette implémentation dépend en interne de l'implémentationtoString() du type que nous considérons.

5. Conclusion

Dans cet article, nous avons vu à quel point il est facile de convertir unList en unString en utilisant différentes techniques.

Comme toujours, le code source complet de cet article peut être trouvéover on GitHub.