Pracując w aplikacji Java, niedawno musiałem utworzyć listę wartości rozdzielanych przecinkami, aby przekazać ją do innej usługi sieci Web, nie wiedząc z góry, ile elementów będzie. Najlepsze, co mogłem wymyślić z czubka głowy, to coś takiego:
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", "," );
Zdaję sobie sprawę, że nie jest to szczególnie wydajne, ponieważ wszędzie są tworzone ciągi, ale chciałem uzyskać bardziej przejrzystość niż optymalizację.
W Ruby mogę zamiast tego zrobić coś takiego, co wydaje się znacznie bardziej eleganckie:
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Ale ponieważ Java nie ma polecenia łączenia, nie mogłem znaleźć niczego równoważnego.
Więc jaki jest najlepszy sposób, aby to zrobić w Javie?