gpt4 book ai didi

java - 性能问题 - 清除并重用一个集合或扔掉它并获得一个新的

转载 作者:行者123 更新时间:2023-12-04 20:48:57 25 4
gpt4 key购买 nike

假设我们尝试实现一个合并排序算法,给定一个数组数组来合并什么是更好的方法,这样:

public void merge(ArrayList<ArrayList<E>> a) {
ArrayList<ArrayList<E>> tmp = new ArrayList<ArrayList<E>>() ;
while (a.size()>1) {
for (int i=1; i<a.size();i+=2) {
tmp.add(merge(a.get(i-1),a.get(i)));
}
if (a.size()%2==1) tmp.add(a.get(a.size()-1));
a = tmp;
tmp = new ArrayList<ArrayList<E>>() ;
}
}

或者这个:

public void merge(ArrayList<ArrayList<E>> a) {
ArrayList<ArrayList<E>> tmp = new ArrayList<ArrayList<E>>(),tmp2 ;
while (a.size()>1) {
for (int i=1; i<a.size();i+=2) {
tmp.add(merge(a.get(i-1),a.get(i)));
}
if (a.size()%2==1) tmp.add(a.get(a.size()-1));
tmp2 = a;
a = tmp;
tmp = tmp2;
tmp.clear();
}
}

为了更清楚,我所做的是合并 a 中的每一对邻居,并将生成的合并数组放入外部数组数组 tmp,合并所有对后,一种方法是清除a,然后移动tmpa,然后将清除的 a 移动到 时间。第二种方法是“扔掉”旧的 tmp 并获得新的 tmp,而不是重复使用旧的。

最佳答案

作为一般规则,不要花费精力尝试重用旧集合;它只会使您的代码更难阅读(并且通常不会给您带来任何实际好处)。仅当您的代码已经可以工作并且您有硬数字表明您的算法速度得到了提高时,才可以尝试这些优化。

关于java - 性能问题 - 清除并重用一个集合或扔掉它并获得一个新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com