小编Igr*_*are的帖子

ArrayList容量增长中Java 6和Java 7之间的差异

我有一个问题,关于如何在Java中管理ArrayList的容量增长(不是大小,而是容量).当我们使用默认构造函数初始化ArrayList而不设置容量时,默认情况下容量设置为10.

此时,当我们向列表添加另一个元素时,Oracle文档说"当元素添加到ArrayList时,其容量会自动增长.除了添加元素具有常量这一事实之外,未指定增长策略的详细信息摊销时间成本."

如果我们看看Java内部,容量增长政策已经改变了它的功能.直到Java 6它是:

(1) int newCapacity = (oldCapacity * 3)/2 + 1;
Run Code Online (Sandbox Code Playgroud)

从Java 7(和> 7)它是:

(2) int newCapacity = oldCapacity + (oldCapacity >> 1);
Run Code Online (Sandbox Code Playgroud)

但这两个数学系列略有不同.从默认值(10)开始,我们有:

(1)10,16,25,38,58,88,133,200,301,452 ......

(2)10,15,22,33,49,73,109,163,244,366 ......

我认为这对ArrayList的使用没有任何影响,但为什么他们改变了这个功能呢?有任何表现原因吗?他们发现了旧的瑕疵还是虫子?

java math arraylist

3
推荐指数
1
解决办法
264
查看次数

标签 统计

arraylist ×1

java ×1

math ×1