ArrayList與LinkedList

來源:互聯網
上載者:User

對於處理一列資料項目,Java提供了兩個類ArrayList和LinkedList,ArrayList的內部實現是基於內部數組Object[],所以從概念上講,它更像數組,但LinkedList的內部實現是基於一組串連的記錄,所以,它更像一個鏈表結構,所以,它們在效能上有很大的差別。

在ArrayList的前面或中間插入資料時,必須將其後的所有資料相應的後移,這樣必然要花費較多時間,所以,當你的操作是在一列資料的後面添加資料而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的效能;

而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿著串連方向一個一個元素地去尋找,直到找到所需的元素為止,所以,當你的操作是在一列資料的前面或中間添加或刪除資料,並且按照順序訪問其中的元素時,就應該使用LinkedList了。

如果在編程中,兩種情形交替出現,這時,可以考慮使用List這樣的通用介面,而不用關心具體的實現,在具體的情形下,它的效能由具體的實現來保證。

案例:LinkedList 實現堆棧

案例說明

ArrayList的查詢效率比較高,增刪動作的效率比較差,適用於查詢比較頻繁,增刪動作較少的元素管理的集合。LinkedList的查詢效率低,但是增刪效率很高。適用於增刪動作的比較頻繁,查詢次數較少的元素管理集合。

ArrayList,LinkedList都是線程不安全的。

實現堆棧 1)數組(ArrayList,增刪效率比較低,不適合)

2)LinkedList(實現堆棧的好方法)

3)java.util.Stack類,Stack是Vector的子類,Vector類是一個安全執行緒的(是一個重量級的類),並繼承了Vector的方法,Verctor類和ArrayList的功能近乎相同。(不推薦使用Stack類來實現堆棧)。

實現過程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.