Java中的ArrayList.trimToSize()方法詳解
ArrayList.trimToSize()方法
在看《Java 核心技術(shù)卷一》時,認(rèn)識到了trimToSize()這個方法。
原文內(nèi)容如圖所示。
接下來拿例子來參考一下:
下文內(nèi)容轉(zhuǎn)載自其他博主blog,講解的很清晰。
前幾天看了Java ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義。貼在這里。
ArrayList al = new ArrayList(10); for(int i=0;i<10;i++){ al.add(i); } al.add(1); al.trimToSize();
例子很簡單,就是new一個初始容量為10的ArrayList,之后向里面加入一個元素。接下來看看debug的內(nèi)容:
可以看到,向ArrayList里面加入10個元素之后,elementData的內(nèi)容如圖所示。
elementData數(shù)組動態(tài)增長到容量為15。這是我們看看ArrayList的源碼:
private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
oldCapacity = 10,1010(10)右移一位位0101(5),newCapacity = 10 + 5 = 15; 之后調(diào)用trimToSize()方法,再看看debug內(nèi)容:
此時elementData的大小變?yōu)榱?1。也就是說這個方法將elementData的數(shù)組設(shè)置為ArrayList實際的容量,動態(tài)增長的多余容量被刪除了。
再貼個trimToSize()方法的源碼:用Arrays.copyOf(T [],int newLength)這個方法來截取elementData數(shù)組。
public void trimToSize() { modCount++; if (size < elementData.length) { elementData = Arrays.copyOf(elementData, size); } }
到此這篇關(guān)于Java中的ArrayList.trimToSize()方法詳解的文章就介紹到這了,更多相關(guān)ArrayList.trimToSize()方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java統(tǒng)計漢字字?jǐn)?shù)的方法示例
這篇文章主要介紹了java統(tǒng)計漢字字?jǐn)?shù)的方法,結(jié)合實例形式分析了java正則判定、字符串遍歷及統(tǒng)計相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Springboot整合SpringSecurity實現(xiàn)登錄認(rèn)證和鑒權(quán)全過程
這篇文章主要介紹了Springboot整合SpringSecurity實現(xiàn)登錄認(rèn)證和鑒權(quán)全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java日常練習(xí)題,每天進(jìn)步一點點(21)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07java 反射調(diào)用Service導(dǎo)致Spring注入Dao失效的解決方案
這篇文章主要介紹了java 反射調(diào)用Service導(dǎo)致Spring注入Dao失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08