Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建包含另一个集合的内容和一个以上元素的新集合的最快方法是什么_Java_Collections - Fatal编程技术网

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

Java 创建包含另一个集合的内容和一个以上元素的新集合的最快方法是什么,java,collections,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循环和构建集合来实现这一点,但我想知道是否有更快的方法来实现这一点。我已经制定了逻辑,现

对于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循环和构建集合来实现这一点,但我想知道是否有更快的方法来实现这一点。我已经制定了逻辑,现在我正在尝试优化速度,因为我们真的需要它

您可以使用streams来解决此问题,收集
列表

以下是一个可能的解决方案:

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);
}

使用streams的优点是,您可以轻松地将其并行化,这可能会提高大型数据集的性能。

是否要使用
a
b
中的公共元素创建新集合?否。正如我上面所说,它应该是a的所有元素,b中的每个元素加上b中的一个元素。这将导致b.size()*集合。您能提供一个输入输出示例吗?对于此类任务,您不应该要求时间效率,而应该要求代码可读性。一个简单的
List=newarraylist(A);列表。添加(当前)
应该足够了(假设
current
持有
b
集合的当前字符串)。如果我答对了问题,他希望b中的每个元素b创建一个新集合,其中包含a+b的所有元素。这与:new ArrayList(a);列表。添加(bElement);这是相当清楚和简洁的。到目前为止,我找不到更好的表现,所以我会接受这个答案。谢谢你帮助我。
[[1, 2, 3], [1, 2, 4]]