【问题标题】:Every combination of 2 strings in List Java 8 [duplicate]List Java 8中2个字符串的每个组合[重复]
【发布时间】:2017-06-29 20:16:23
【问题描述】:
我想组合列表中的每两个字符串并使用 java8 流返回组合列表:
List<String> list;
Stream.concat(list.stream(), list.stream())
.collect(toList());
但是,此代码不会产生组合,而只会产生列表的元素。我究竟做错了什么。我还希望将此代码并行化,以便它可以在多个内核上运行
【问题讨论】:
标签:
java
lambda
functional-programming
java-8
java-stream
【解决方案1】:
使用flatMap 以组合方式组合字符串。每个字符串将与列表中的每个字符串连接。
List<String> combinations =
list.stream()
.flatMap(str1 -> list.stream().map(str2 -> str1 + str2))
.collect(toList());
Ideone Demo
要使操作并行,请将.stream() 替换为.parallelStream()。根据您的输入大小,这可能会使操作变慢或变快。