AraryList學習總結

來源:互聯網
上載者:User
 

在大多數的電腦語言中,我們在申明一個數組的時候必須首先固定數組的大小,否則編譯會出錯,但是在很多時候,我們事先並不能確定數組的大小,這時為了保證程式能夠順利的運行我們可能不得不盡量將數組的長度定的很大,這樣當數組的實際長度比較小時,就會浪費掉很多資源。為瞭解決在程式運行時動態改變數組大小地問題,在java中提供了這樣一個類ArrayList,它能夠實現與數組同樣的功能,並能夠動態地改變大小,就像一個能夠自己伸縮的容器一樣,如氣球,呵呵。1. 工作原理在ArrayList有一個內部數組,專門用來存放放在ArrayList中的對象的reference。我們不斷調用ArrayList的add(Object object)方法增加對象,最終那個內部數組會full,這個時候“神奇”發生了,ArrayList會自動建立一個更大的內部數組把那些references從較小的數組中拷貝過來同時把要add的那個對象也塞進去,當然這樣會引起額外的開銷。從這個原理來看,我認為在使用ArrayList的時候最好在構造它的時候指定一個初始容量或者通過調用ensureCapacity(int i)指定一個容易,這樣在達到預設的容量之前,都不會有額外的開銷,否則的話每增加一個新的對象都會引起額外的開銷。當ArrayList的大小(size)不會再發生變化時,我們可以調用ArrayList的trimToSize()方法來降低ArrayList的儲存容量至其實際儲存容量(即size的大小)。打個比方,我們初始化一個ArrayList時指定了其容量為100,但最終它只存放了60個對象,這個時候通過調用trimToSize()方法,就可以剛好把儲存空間調整為存放60個對象所需的大小,多餘的空間將由記憶體回收行程負責回收。請注意,只有當你確定ArrayList的大小(size)不再變化的時候才調用trimToSize()方法,否則,當你再增加新的對象就會引起額外的開銷。2. 操作ArrayList在ArrayList被構造好之後,我們就可以利用它的方法對其中的對象進行操作了,包括增刪改查等等。通過使用泛型,我們可以很好的把ArrayList靈活的增長性和數組方便的存取訪問結合起來。例如,我聲明了一個泛型,ArrayList<Stirng> test =new ArrayList<String>();在通過add方法加入了若干個String對象後,就可以通過如下代碼把其轉化為一個String數組:String str[]=new String[test.size()];test.toArray(str)。這樣test中的元素都到str中了,可以很方便的存取了。(註:泛型是JDK5.0的新特性,以後會專門單獨學習總結)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.