In a previous post, I wrote about how you can use Guava's Joiner to easily convert an Iterable
into a String
, so you no longer have to iterate over it and build the String manually.
Java 8 introduces the StringJoiner
, which can be used to join a Stream
using Collectors.joining
. For example:
Arrays.asList("apple", "banana", "cherry") .stream() .collect(Collectors.joining(", ");
To skip nulls and empty strings, you can filter the stream first:
Arrays.asList("apple", "banana", null, "", "cherry") .stream() .filter(s -> s != null && !s.isEmpty()) .collect(Collectors.joining(", ");
I'd still use Guava's Joiner for lists though.