This comes up pretty frequently and seems like an odd omission from the standard library, particularly given that String now has split(). Most attempts are a little untidy, here’s the simplest expression of it that I could come up with:
public static String join(String separator, Object... items) { StringBuffer result = new StringBuffer(); for (Object item : items) { if (result.length() > 0) result.append(separator); result.append(item); } return result.toString(); }
There is a theoretical performance improvement to be had in not repeatedly calling length() but without an actual bottleneck situation to solve, I’d err on the side of simplicity.