gpt4 book ai didi

java - 在构造函数中设置 Java 集合的大小是否更好?

转载 作者:行者123 更新时间:2023-11-29 09:39:15 25 4
gpt4 key购买 nike

如果我知道那时的大小,将 Collection 的大小传递给 Collection 构造函数是否更好?关于扩展 Collection 和分配/重新分配的节省效果是否明显?

如果我知道 Collection 的最小大小但不知道上限怎么办。仍然值得至少以最小尺寸创建它吗?

最佳答案

不同的集合对此有不同的性能影响,对于 ArrayList 来说,节省可能非常明显。

import java.util.*;
public class Main{
public static void main(String[] args){
List<Integer> numbers = new ArrayList<Integer>(5);
int max = 1000000;
// Warmup
for (int i=0;i<max;i++) {
numbers.add(i);
}

long start = System.currentTimeMillis();
numbers = new ArrayList<Integer>(max);
for (int i=0;i<max;i++) {
numbers.add(i);
}
System.out.println("Preall: "+(System.currentTimeMillis()-start));

start = System.currentTimeMillis();
numbers = new ArrayList<Integer>(5);
for (int i=0;i<max;i++) {
numbers.add(i);
}
System.out.println("Resizing: "+(System.currentTimeMillis()-start));

}
}

结果:

Preall: 26
Resizing: 58

将 max 设置为 10000000 值的 10 倍运行给出:

Preall: 510
Resizing: 935

因此您可以看到,即使在不同的尺寸下,比率也保持大致相同。

这几乎是一个最坏情况的测试,但是一次填充一个数组的一个元素是很常见的,你可以看到大约有 2* 速度的差异。

关于java - 在构造函数中设置 Java 集合的大小是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138920/

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