创建包含另一个集合的内容以及一个以上元素的新集合的最快方法是什么

时间:2018-07-05 14:22:00

标签: java collections

对于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循环和构建收集来执行此操作,但是我想知道是否有更快的方法来执行此操作。我已经弄清楚了逻辑,现在我正尝试针对速度进行优化,因为我们确实需要它!

1 个答案:

答案 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]]

使用流的优点是您可以轻松地对其进行并行化,这在大型数据集的情况下可以提高性能。