Mentre lavoravo in un'app Java, di recente avevo bisogno di assemblare un elenco di valori delimitati da virgole da passare a un altro servizio Web senza sapere quanti elementi ci sarebbero stati in anticipo. Il meglio che potevo inventare dalla cima della mia testa era qualcosa del genere:
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", "," );
Mi rendo conto che questo non è particolarmente efficiente, poiché ci sono stringhe create in tutto il luogo, ma stavo andando per chiarezza più che per l'ottimizzazione.
In Ruby, invece, posso fare qualcosa del genere, che mi sembra molto più elegante:
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Ma poiché Java non ha un comando join, non sono riuscito a capire nulla di equivalente.
Quindi, qual è il modo migliore per farlo in Java?