JavaScript has Array.join()
js>["Bill","Bob","Steve"].join(" and ") Bill and Bob and Steve
Does Java have anything like this? I know I can cobble something up myself with StringBuilder
:
static public String join(List<String> list, String conjunction) { StringBuilder sb = new StringBuilder(); boolean first = true; for (String item : list) { if (first) first = false; else sb.append(conjunction); sb.append(item); } return sb.toString(); }
.. but there’s no point in doing this if something like it is already part of the JDK.
Advertisement
Answer
String.join
With Java 8 you can do this without any third party library.
If you want to join a Collection of Strings you can use the String.join
() method:
List<String> list = Arrays.asList("foo", "bar", "baz"); String joined = String.join(" and ", list); // "foo and bar and baz"
Collectors.joining
If you have a Collection with another type than String you can use the Stream API with the joining Collector:
List<Person> list = Arrays.asList( new Person("John", "Smith"), new Person("Anna", "Martinez"), new Person("Paul", "Watson ") ); String joinedFirstNames = list.stream() .map(Person::getFirstName) .collect(Collectors.joining(", ")); // "John, Anna, Paul"
The StringJoiner
class may also be useful.