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
stream.collect(Collectors.joining(\", \"))
\"a, b, c
Try joining the last 2 strings first with stream.collect(Collectors.joining(" and "))
stream.collect(Collectors.joining(" and "))
Then join all remaining strings and this new string with the code you used in your question: stream.collect(Collectors.joining(", ")).
stream.collect(Collectors.joining(", "))