【发布时间】:2011-06-29 18:30:48
【问题描述】:
根据 Sun Java 实现,在扩展期间,ArrayList 增长到其初始容量的 3/2,而 HashMap 的扩展率是两倍。这背后的原因是什么?
根据实现,对于 HashMap,容量应始终为 2 的幂。这可能是 HashMap 行为的一个原因。但在这种情况下,问题是,对于 HashMap,为什么容量应该始终是 2 的幂?
【问题讨论】:
-
StringBuffer/StringBuilder 也增长了 2 倍,并且没有要求它的大小必须是 2 的幂。
-
这可能无非是两个不同的程序员编写了 ArrayList 和 HashMap 的实现,他们都任意决定了不同的增长值。