在JDK 1.7到ArrayList.java中,该方法ensureCapacity使用以下表达式增加阵列容量:int newCapacity = oldCapacity + (oldCapacity >> 1)因此看起来新容量几乎比旧容量多50%.
然而,在很多书中都说容量增加了一倍......所以书籍没有更新或我不太懂?
除了添加元素具有恒定的摊销时间成本这一事实之外,未指定增长策略的详细信息.
换句话说,这些书籍对于其他实现可能是准确的,但没有任何保证 - 并且Java 7源代码仍然符合文档,但显示书籍过于具体.
你的理解是正确的,newCapacity比oldCapacity多50%
在Java 6中,newCapacity计算为
int newCapacity = (oldCapacity * 3)/2 + 1;
Run Code Online (Sandbox Code Playgroud)
这是Java等开源语言的美妙之处,您可以看到实现 - 如果它不符合您的要求,您可以实现自己的.
| 归档时间: |
|
| 查看次数: |
5174 次 |
| 最近记录: |