Use flatMap to combine the strings in a combinatoric manner. Each string will be concatenated with each string in the list.
List<String> combinations =
list.stream()
.flatMap(str1 -> list.stream().map(str2 -> str1 + str2))
.collect(toList());
Ideone Demo
To make the operations parallel, swap out .stream()
for .parallelStream()
. Depending on your input size, this may make the operation slower or faster.