Alors que je travaillais sur une application Java, j'ai récemment eu besoin d'assembler une liste de valeurs délimitées par des virgules pour la transmettre à un autre service web sans savoir à l'avance combien d'éléments il y aurait. Le meilleur résultat que j'ai pu obtenir de mémoire était quelque chose comme ceci :
public String appendWithDelimiter( String original, String addition, String delimiter ) {
if ( original.equals( "" ) ) {
return addition;
} else {
return original + delimiter + addition;
}
}
String parameterString = "";
if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", "," );
if ( anotherCondition ) parameterString = appendWithDelimiter( parameterString, "anotherElementName", "," );
Je me rends compte que ce n'est pas particulièrement efficace, puisque des chaînes sont créées un peu partout, mais je cherchais davantage la clarté que l'optimisation.
En Ruby, je peux faire quelque chose comme ceci à la place, ce qui est beaucoup plus élégant :
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Mais comme Java n'a pas de commande de jointure, je n'ai pas trouvé d'équivalent.
Alors, quelle est la meilleure façon de faire cela en Java ?
0 votes
Le StringbBilder est la voie à suivre - java.lang.StringBuilder.
0 votes
Pour Java 8, consultez cette réponse : stackoverflow.com/a/22577623/1115554