gpt4 book ai didi

java - 并行地将两个 ArrayList 合并到一个 ArrayList 中?

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:22 25 4
gpt4 key购买 nike

我需要将两个 ArrayList 合并到一个 ArrayList 中,但我需要非常快地完成它,因为执行此操作的函数被调用了很多次。这是我的函数版本:

  public ArrayList<Pair<String, Integer>> mergeIdWithGrade(ArrayList<String> id, ArrayList<Integer> grades) {

ArrayList<Pair<String, Integer>> list = new ArrayList<>();
for(int i = 0; i< id.size(); i++)
{
list.add(new Pair<String,Integer>(id.get(i), grades.get(i)));
}
return list;
}

作为函数参数的两个ArrayList,它们的大小和索引i处的元素相同的ArrayList<String> id对应于索引 i 处的元素ArrayList<Integer> grades的(他们正在配对)。该函数的复杂度显然是 O(n),但我想知道这可以使用并行流来完成,还是通常使用 CPU 的所有核心并行完成?

最佳答案

我同意其他评论,即并行执行可能没有帮助。尽管如此,请尝试一下这段代码,看看并行是否对您有利

    public List<Pair<String, Integer>> mergeIdWithGrade(List<String> id, List<Integer> grades) {
return IntStream
.range(0, Math.min(id.size(), grades.size()))
.parallel() // try with and without it
.mapToObj(i -> new Pair(id.get(i), grades.get(i)))
.collect(Collectors.toList());
}

注意,这里只是在不同线程中完成映射。结果将由主线程收集。

关于java - 并行地将两个 ArrayList 合并到一个 ArrayList 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59537628/

25 4 0