Using stream.collect(Collectors.joining(\", \")) I can easily join all the strings of my stream delimited by a comma. A possible result would be \"a, b, c
If you're fine with "a, b, and c", then it's possible to use mapLast method of my StreamEx library which extends standard Stream API with additional operations:
String result = StreamEx.of("a", "b", "c")
.mapLast("and "::concat)
.joining(", "); // "a, b, and c"
The mapLast method applies given mapping to the last stream element keeping others unchanged. I even have similar unit-test.