Conversion d'une liste en chaîne en Java

1. Introduction

Dans cet article rapide, nous verrons comment convertir une liste d'éléments en chaîne . Cela peut être utile dans certains scénarios comme l'impression du contenu sur la console sous une forme lisible par l'homme pour l'inspection / le débogage.

2. Standard toString () sur une liste

L'un des moyens les plus simples consiste simplement à appeler la méthode toString () sur la liste :

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

Production:

[1, 2, 3]

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

Si nous utilisons notre type personnalisé, disons Person , nous devons nous assurer que la classe Person remplace la méthode toString () et ne repose pas sur l'implémentation par défaut. Si la méthode toString () 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 de collecteurs

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

Production:

{1-2-3}

La méthode Collectors.joining () nécessite une CharSequence , nous devons donc mapper l' Integer sur 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 classe StringUtils d'Apache Commons pour obtenir des résultats similaires.

4.1. Dépendance de Maven

 org.apache.commons commons-lang3 3.6 

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

4.2. la mise en oeuvre

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

@Test public void whenStringUtilsJoin_thenPrintCustom() ")); 

Production:

1|2|3

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

5. Conclusion

Dans cet article, nous avons vu à quel point il est facile de convertir une liste en chaîne en utilisant différentes techniques.

Comme toujours, le code source complet de cet article est disponible sur GitHub.