【发布时间】:2012-06-03 10:12:27
【问题描述】:
看了ArrayList的java doc,发现ArrayList的初始容量是10。
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this(10);
}
我认为如果它是 2 的任何幂都有意义,但为什么是 10?
我还检查了 HashMap 的初始容量,它是 16,这是有道理的。
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
* Constructs an empty <tt>HashMap</tt> with the default initial capacity
* (16) and the default load factor (0.75).
*/
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR;
threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
table = new Entry[DEFAULT_INITIAL_CAPACITY];
init();
}
数字 10 背后有什么具体原因吗?
【问题讨论】:
-
>>> 如果它是 2 的任意数量的幂可能有意义 为什么?
-
我认为这可以追溯到 cs 中的主要生命形式,它似乎有两个机械手,每个机械手都有 5 个数字。在计算的早期用于计数的那些。因此,他们更喜欢 10 的幂。
-
10是Array List的初始容量而不是大小。初始大小始终为0。
-
@AbhisekBose :是的,你写的。我的错误。它的容量不是大小。我修改了问题。 :)
-
Java 1.7.0_40更新后,ArrayList初始容量为0(指向空数组)
标签: java collections arraylist