К сожалению, Java не является функциональным языком программирования и не имеет хорошего способа сделать то, что вы хотите.
Я полагаю, что в библиотеке Apache Commons есть функция с именем join , которая будет делать то, что вы хотите.
Это должно быть достаточно хорошо, чтобы скрыть цикл в методе.
public static String combine(List<String> list, String separator){
StringBuilder ret = new StringBuilder();
for(int i = 0; i < list.size(); i++){
ret.append(list.get(i));
if(i != list.size() - 1)
ret.append(separator);
}
return ret.toString();
}
Полагаю, вы могли бы сделать это рекурсивно:
public static String combine(List<String> list, String separator){
return recursiveCombine("", list, 0, separator);
}
public static String recursiveCombine(String firstPart, List<String> list, int posInList, String separator){
if (posInList == list.size() - 1) return firstPart + list.get(posInList);
return recursiveCombine(firstPart + list.get(posInList) + separator, list, posInList + 1, seperator);
}