ArrayList的自動擴充機制實例解析
用一道選擇題作為本文的開始吧!
ArrayList list = new ArrayList(20);中的list擴充幾次
A.0
B.1
C.2
D.3
答案:A
1、ArrayList的默認(rèn)初始容量為10,當(dāng)然也可以自定義指定初始容量,隨著動態(tài)的向其中添加元素,其容量可能會動態(tài)的增加,那么擴容的公式為:
新容量 = 舊容量/2 + 舊容量
比如:初始容量為4,其容量的每次擴充后的新容量為:4->6->9->13->19->…
即每次擴充至原有基礎(chǔ)的1.5倍
ArrayList的構(gòu)造函數(shù)總共有三個:
(1)ArrayList()構(gòu)造一個初始容量為 10 的空列表。
(2)ArrayList(Collection<? extends E> c)構(gòu)造一個包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
(3)ArrayList(int initialCapacity)構(gòu)造一個具有指定初始容量的空列表。
調(diào)用的是第三個構(gòu)造函數(shù),直接初始化為大小為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,如果沒有指定每次增長的大小,則默認(rèn)是翻倍增長。
總結(jié)
以上就是本文關(guān)于ArrayList的自動擴充機制實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Spring Java-based容器配置詳解、ArrayList在for循環(huán)中使用remove方法移除元素方法介紹等,有什么問題可以隨時留言,小編會及時回復(fù)大家的,感謝朋友們對本站的支持!
相關(guān)文章
Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng)
這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng),對正在工作或者學(xué)習(xí)的你有一定的參考價值,需要的朋友可以參考一下2022-01-01詳解Spring中實現(xiàn)接口動態(tài)的解決方法
最近在工作遇到的一個,發(fā)現(xiàn)網(wǎng)上的資料較少,所以想著總結(jié)分享下,下面這篇文章主要給大家介紹了關(guān)于Spring中實現(xiàn)接口動態(tài)的解決方法,文中通過完整的示例代碼給大家介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07J2EE Servlet基礎(chǔ)在瀏覽器上運行HelloServlet的方法
這篇文章主要介紹了J2EE Servlet基礎(chǔ)在瀏覽器上運行HelloServlet的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10Java結(jié)合redis實現(xiàn)接口防重復(fù)提交
本文主要介紹了Java結(jié)合redis實現(xiàn)接口防重復(fù)提交,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09