源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-03-08 10:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ArrayList的自动扩充机制实例解析
用一道选择题作为本文的开始吧! [b]ArrayList list = new ArrayList(20);中的list扩充几次 [/b] [b]A.0 B.1 C.2 D.3 [/b] [b]答案:A[/b] [b]1、ArrayList的默认初始容量为10,当然也可以自定义指定初始容量,随着动态的向其中添加元素,其容量可能会动态的增加,那么扩容的公式为: [/b] 新容量 = 旧容量/2 + 旧容量 比如:初始容量为4,其容量的每次扩充后的新容量为:4->6->9->13->19->… 即每次扩充至原有基础的1.5倍 [b]ArrayList的构造函数总共有三个: [/b] (1)ArrayList()构造一个初始容量为 10 的空列表。 (2)ArrayList(Collection<? extends E> c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 (3)ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表。 调用的是第三个构造函数,直接初始化为大小为20的list,没有扩容,所以选择A 如果初始化为ArrayList(0),则会在新容量计算完毕后,增加至1; 另外与之类似的还有, [b]2、HashMap的初始大小为16,增长时,直接容量翻番,如源代码。[/b]
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); 
} 
[b]3、Vector的初始大小为10,如果没有指定每次增长的大小,则默认是翻倍增长。[/b] [b]总结[/b] 以上就是本文关于ArrayList的自动扩充机制实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:[url=http://www.1sucai.cn/article/125776.htm]Spring Java-based容器配置详解[/url]、[url=http://www.1sucai.cn/article/124990.htm]ArrayList在for循环中使用remove方法移除元素方法介绍[/url]等,有什么问题可以随时留言,小编会及时回复大家的,感谢朋友们对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部