对于Java 7/8:
如果我有两个集合,a和b都是字符串的集合,我希望找到一种最省时的方法,为b中的每个元素创建一个新集合,其中将包含a中的所有元素加上b中的当前元素。
示例输入:
a = [a,b,c,d]
b = [e,f,g]
示例输出:
[
[a,b,c,d,e],
[a,b,c,d,f],
[a,b,c,d,g]
]
我了解如何使用流和收集来执行此操作,并且我知道如何使用for循环和构建收集来执行此操作,但是我想知道是否有更快的方法来执行此操作。我已经弄清楚了逻辑,现在我正尝试针对速度进行优化,因为我们确实需要它!
答案 0 :(得分:2)
您可以使用流来解决此问题,收集List<List<Integer>>
。
这是一个可能的解决方案:
public static void main(String[] args) {
List<Integer> a = Arrays.asList(1, 2);
List<Integer> b = Arrays.asList(3, 4);
List<List<Integer>> collect = b.stream().map(e -> Stream.concat(a.stream(), Stream.of(e)).collect(Collectors.toList()))
.collect(Collectors.toList());
System.out.println(collect);
}
这将打印出来:
[[1, 2, 3], [1, 2, 4]]
使用流的优点是您可以轻松地对其进行并行化,这在大型数据集的情况下可以提高性能。