關於ArrayList.clear()與=null以及new ArrayList ()


ArrayList是常用到的JCF類,用來保存類型相同的一組對象,並通過下標來快速訪問指定對象。今天討論的是當我們使用完ArrayList后應該選擇怎樣合適的處理方式。

這里現在有三種方式如下:

1. 使用ArrayList的對象方法clear()

ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list.clear();

 ArrayList對象內部維護一個對象數組elementData, 當執行clear()方法時, 會執行循環將elementData中每一個坐標都設置為為null, 並設置數組的size為0。

2. 使用=null

ArrayList<String> list = new ArrayList<String>();
list.add("0");
list.add("1");
list.add("2");
list = null;

直接將變量list指向null,通常當我們不需要再使用ArrayList對象時,可以將變量值設為null,以便GC可以運作並回收這部分內存空間。

需要注意的是當仍有其他變量指向該對象時,即使講變量list置為null垃圾回收器也無法回收該內存空間。如下:

ArrayList<String> list = new ArrayList<String>();
ArrayList<String> arraylist = list;
list.add("0");
list.add("1");
list.add("2");
list = null; // 此時list變量指向null,而arraylist變量仍然指向原內存空間,原內存空間得不到釋放

3. 使用= new ArrayList()

方法3有點類似於方法1,都是得到一個空的ArrayList對象。不過new ArrayList()會得到一個初始化內部數組elementData容量為10的ArrayList對象,而方法1得到的對象的容量與原對象一致。值得注意的是使用方法3需要進行如在內存中重新開辟內存空間等操作,開銷較大,如果只是單純的想要使用空的ArrayList對象,建議使用方法1,相對來說可盡量避免堆內存溢出問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM