ArrayList的自动扩充机制实例解析
用一道选择题作为本文的开始吧!
ArrayListlist=newArrayList(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(Collectionc)构造一个包含指定collection的元素的列表,这些元素是按照该collection的迭代器返回它们的顺序排列的。
(3)ArrayList(intinitialCapacity)构造一个具有指定初始容量的空列表。
调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容,所以选择A
如果初始化为ArrayList(0),则会在新容量计算完毕后,增加至1;
另外与之类似的还有,
2、HashMap的初始大小为16,增长时,直接容量翻番,如源代码。
voidaddEntry(inthash,Kkey,Vvalue,intbucketIndex){ 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的自动扩充机制实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:SpringJava-based容器配置详解、ArrayList在for循环中使用remove方法移除元素方法介绍等,有什么问题可以随时留言,小编会及时回复大家的,感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。