StringUtil { public static String join(final char delimiter, final String... strings) { if (strings.length == 0) { return null; } if (strings.length == 1) { return strings[0]; } int length = strings.length - 1; for (final String s : strings) { if (s == null) { continue; } length += s.length(); } final StringBuilder sb = new StringBuilder(length); if (strings[0] != null) { sb.append(strings[0]); } for (int i = 1; i < strings.length; ++i) { if (!isEmpty(strings[i])) { sb.append(delimiter).append(strings[i]); } else { sb.append(delimiter); } } return sb.toString(); }  static boolean isEmpty(String str); static boolean isNotEmpty(String str); static void setIfPresent(String value, Consumer<String> setter); static String join(final char delimiter, final String... strings); static boolean substringMatch(CharSequence str, int index, CharSequence substring); static String cut(String str, int threshold); static String trim(final String str, final char ch);  }
@Test public void testJoin() { Assert.assertNull(StringUtil.join('.')); Assert.assertEquals("Single part.", StringUtil.join('.', "Single part.")); Assert.assertEquals("part1.part2.p3", StringUtil.join('.', "part1", "part2", "p3")); Assert.assertEquals("E", StringUtil.join('E', new String[2])); }