143 votes

Meilleur moyen pour concaténer Liste des objets String?

Je suis la pensée de faire de cette façon:


    List sList = new ArrayList();

    // Add elements.

    if (sList != null)
    {
        String listString = sList.toString;
        listString = listString.subString(1, listString.length() - 1);
    }

J'ai trouvé ceci pour être plus lisible qu'à l'aide de la classe StringBuilder/StringBuffer approche.

Des idées/commentaires?

323voto

Jeff Olson Points 2118

Utilisez l'un de la StringUtils.rejoignez méthodes de Apache Commons Lang.

import org.apache.commons.lang3.StringUtils;

String result = StringUtils.join(list, ", ");

150voto

skydreamerr Points 558

À L'Aide De Java 8

String str = list.stream().collect(Collectors.joining())

45voto

Jack Leow Points 11081

Votre approche est tributaire de Java ArrayList#toString() de la mise en œuvre.

Alors que la mise en œuvre est décrite dans l'API Java et très peu de chances de changer, il y a une chance qu'il le pouvait. Il est beaucoup plus fiable pour mettre en œuvre vous-même (boucles, StringBuilders, la récursivité ce que vous aimez mieux).

Sûr que cette approche peut sembler "plus propre" ou plus "trop sucré" ou "argent", mais il est, à mon avis, une moins bonne approche.

41voto

Peter Lawrey Points 229686

Une variation sur codefin réponse

public static String concatStringsWSep(List<String> strings, String separator) {
    StringBuilder sb = new StringBuilder();
    String sep = "";
    for(String s: strings) {
        sb.append(sep).append(s);
        sep = separator;
    }
    return sb.toString();                           
}

16voto

andras Points 1497

La goyave est un très soignée de la bibliothèque de Google:

Joiner joiner = Joiner.on(", ");
joiner.join(sList);

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