Что касается соединения, я думаю, это может выглядеть немного менее сложно:
public String join (Collection<String> c) {
StringBuilder sb=new StringBuilder();
for(String s: c)
sb.append(s);
return sb.toString();
}
Я не могу использовать синтаксис Java 5 так часто, как хотелось бы (верьте, хотите нет, я в последнее время пользуюсь 1.0.x), поэтому я могу быть немного ржавым, но я уверен, что концепция верна.
редактировать добавление: Добавление строк может быть медленным, но если вы работаете с кодом GUI или какой-то непродолжительной подпрограммой, на самом деле не имеет значения, будете ли вы использовать 0,005 секунды или 0,006, поэтому если у вас есть коллекция "joinMe", который вы хотите добавить к существующей строке "target", было бы ужасно просто вставить следующее:
for(String s : joinMe)
target += s;
Это довольно неэффективно (и вредная привычка), но не все, что вы сможете воспринимать, если нет тысяч строк, или это внутри огромного цикла, или ваш код действительно критичен к производительности.
Что еще более важно, это легко запомнить, коротко, быстро и очень читабельно. Производительность не всегда является автоматическим победителем в выборе дизайна.