En général la collection de String est une ArrayList ou similaire, du coup j'utilise plutôt un for indexé qu'un foreach, ce qui me dispense d'une variable "c'est le premier ou pas" :
1 2 3 4 5 6 7 8
| StringBuilder builder = new StringBuilder();
for(int i = 0; i < collectionDeString.size(); i++) {
if(i > 0) {
builder.append(',');
}
builder.append(collectionDeString.get(i));
}
return builder.toString(); |
Si je ne peux pas compter sur ArrayList ou similaire, j'utilise un itérateur :
1 2 3 4 5 6 7 8 9
| StringBuilder builder = new StringBuilder();
Iterator<String> itr = collectionDeString.iterator();
while(itr.hasNext()) {
builder.append(itr.next());
if(itr.hasNext()) {
builder.append(',');
}
}
return builder.toString(); |
Sinon, pour ce cas très précis, depuis Java 1.8 tout simplement String.join() :
String result = String.join(",", collectionDeString);
Et pour des cas moins simples mais dont le résultat c'est des String, profiter des streams et de Collectors.joining()
1 2 3
| String result = collectionDePersonnes.stream()
.map(p -> p.getName())
.collect(Collectors.joining(",")); |
Partager