当前位置: 移动技术网 > IT编程>开发语言>Java > ArrayList的自动扩充机制实例解析

ArrayList的自动扩充机制实例解析

2019年07月19日  | 移动技术网IT编程  | 我要评论

猫酷网,波盘王,flickr相册

用一道选择题作为本文的开始吧!

arraylist list = new arraylist(20);中的list扩充几次

a.0
b.1
c.2
d.3

答案:a

1、arraylist的默认初始容量为10,当然也可以自定义指定初始容量,随着动态的向其中添加元素,其容量可能会动态的增加,那么扩容的公式为:

新容量 = 旧容量/2 + 旧容量

比如:初始容量为4,其容量的每次扩充后的新容量为:4->6->9->13->19->…

即每次扩充至原有基础的1.5倍

arraylist的构造函数总共有三个:

(1)arraylist()构造一个初始容量为 10 的空列表。
(2)arraylist(collection<? extends e> c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
(3)arraylist(int initialcapacity)构造一个具有指定初始容量的空列表。

调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容,所以选择a

如果初始化为arraylist(0),则会在新容量计算完毕后,增加至1;

另外与之类似的还有,

2、hashmap的初始大小为16,增长时,直接容量翻番,如源代码。

void addentry(int hash, k key, v value, int bucketindex) { 
    if ((size >= threshold) && (null != table[bucketindex])) { 
      resize(2 * table.length);//原容量2倍 
      hash = (null != key) ? hash(key) : 0; 
      bucketindex = indexfor(hash, table.length); 
    } 
    createentry(hash, key, value, bucketindex); 
} 

3、vector的初始大小为10,如果没有指定每次增长的大小,则默认是翻倍增长。

总结

以上就是本文关于arraylist的自动扩充机制实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:spring java-based容器配置详解arraylist在for循环中使用remove方法移除元素方法介绍等,有什么问题可以随时留言,小编会及时回复大家的,感谢朋友们对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网