184 votes

Comment convertir une liste <String> dans une chaîne séparée par des virgules sans itérer explicitement la liste

 List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
 

Maintenant, je veux un résultat de cette liste en tant que 1,2,3,4 sans l'itérer complètement.

495voto

JJD Points 7539

Sur Android, utilisez:

 TextUtils.join(",", ids);
 

164voto

assylias Points 102015

Avec Java 8:

 String csv = String.join(",", ids);
 

Avec Java 7-, il existe un mauvais moyen (remarque: cela ne fonctionne que si vous n'insérez pas de chaînes contenant ", " dans votre liste) - évidemment, List#toString effectuera une boucle. pour créer idList mais cela n'apparaît pas dans votre code:

 List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String idList = ids.toString();
String csv = idList.substring(1, idList.length() - 1).replace(", ", ",");
 

104voto

Massimiliano Peluso Points 13357
 import com.google.common.base.Joiner;

Joiner.on(",").join(ids);
 

ou vous pouvez utiliser StringUtils :

    public static String join(Object[] array,
                              char separator)

   public static String join(Iterable<?> iterator,
                              char separator)
 

Joint les éléments du tableau fourni / iterable en une seule chaîne contenant la liste d'éléments fournie.

http://commons.apache.org/proper/commons-lang/javadocs/api-3.3.2/org/apache/commons/lang3/StringUtils.html

65voto

milanpanchal Points 1075

Si vous voulez convertir la liste au format CSV .........

 List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");

// CSV format
String csv = ids.toString().replace("[", "").replace("]", "")
            .replace(", ", ",");

// CSV format surrounded by single quote 
// Useful for SQL IN QUERY

String csvWithQuote = ids.toString().replace("[", "'").replace("]", "'")
            .replace(", ", "','");
 

55voto

Nodoze Points 41

Le moyen le plus rapide est

 StringUtils.join(ids, ",");
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X