为什么ArrayList的默认容量是10?

10 浏览
0 Comments

为什么ArrayList的默认容量是10?

我看了ArrayList的Java文档,发现ArrayList的初始容量是10。

 /**
 * 构造一个初始容量为十的空列表。
 */
public ArrayList() {
this(10);
}

如果初始容量是2的幂次方的话,这个设计会更有意义,但为什么是10呢?

我还查了HashMap的初始容量,它是16,这个设计是有道理的。

/**
 * 默认初始容量 - 必须是2的幂次方。
 */
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
 * 使用默认的初始容量(16)和默认的装载因子(0.75)构造一个空的HashMap。
 */
public HashMap() {
    this.loadFactor = DEFAULT_LOAD_FACTOR;
    threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
    table = new Entry[DEFAULT_INITIAL_CAPACITY];
    init();
}

有什么特殊原因使得选择了数字10吗?

0