web-dev-qa-db-fra.com

Meilleure façon de convertir une liste en chaîne séparée par des virgules dans java

J'ai Set<String> result & voudrais le convertir en chaîne séparée par des virgules. Mon approche serait celle montrée ci-dessous, mais je chercherais aussi une autre opinion.

List<String> slist = new ArrayList<String> (result);
StringBuilder rString = new StringBuilder();

Separator sep = new Separator(", ");
//String sep = ", ";
for (String each : slist) {
    rString.append(sep).append(each);
}

return rString;
141
Mad-D

De la bibliothèque Apache Commons:

import org.Apache.commons.lang3.StringUtils

Utilisation:

StringUtils.join(slist, ',');

Une autre question similaire et réponse ici

382
BobTheBuilder

Vous pouvez commencer par compter la longueur totale de la chaîne et la transmettre au constructeur StringBuilder. Et vous n'avez pas besoin de convertir le Set en premier.

Set<String> abc = new HashSet<String>();
abc.add("A");
abc.add("B");
abc.add("C");

String separator = ", ";
int total = abc.size() * separator.length();
for (String s : abc) {
    total += s.length();
}

StringBuilder sb = new StringBuilder(total);
for (String s : abc) {
    sb.append(separator).append(s);
}

String result = sb.substring(separator.length()); // remove leading separator
9
kay

La Separator que vous utilisez est un composant de l'interface utilisateur. Vous feriez mieux d'utiliser un simple String sep = ", ".

4
Dan D.