Во время работы в Java-приложении мне недавно нужно было собрать список значений, разделенных запятыми, чтобы перейти к другому веб-сервису, не зная, сколько элементов будет заблаговременно. Лучшее, что я мог придумать с верхней части головы, было примерно так:
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", "," );
Я понимаю, что это не особенно эффективно, поскольку во всем мире создаются строки, но я собираюсь сделать их более ясными, чем оптимизация.
В Ruby я могу сделать что-то подобное вместо этого, которое выглядит намного элегантнее:
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Но так как Java не имеет команды соединения, я не мог понять ничего эквивалентного.
Итак, что лучший способ сделать это в Java?