Java 集合 - ArrayList 與 LinkedList 區(qū)別

學習完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師

  • 因為 Array 是基于索引(index)的數(shù)據(jù)結構,它使用索引在數(shù)組中搜索和讀取數(shù)據(jù)是很快的。Array 獲取數(shù)據(jù)的時間復雜度是 O(1),但是要刪除數(shù)據(jù)卻是開銷很大的,因為這需要重排數(shù)組中的所有數(shù)據(jù)。
  • 相對于 ArrayList,LinkedList 插入是更快的。因為 LinkedList 不像 ArrayList 一樣,不需要改變數(shù)組的大小,也不需要在數(shù)組裝滿的時候要將所有的數(shù)據(jù)重新裝入一個新的數(shù)組,這是 ArrayList 最壞的一種情況,時間復雜度是 O(n),而 LinkedList 中插入或刪除的時間復雜度僅為 O(1)。ArrayList 在插入數(shù)據(jù)時還需要更新索引(除了插入數(shù)組的尾部)。
  • 類似于插入數(shù)據(jù),刪除數(shù)據(jù)時,LinkedList 也優(yōu)于 ArrayList。
  • LinkedList 需要更多的內(nèi)存,因為 ArrayList 的每個索引的位置是實際的數(shù)據(jù),而 LinkedList 中的每個節(jié)點中存儲的是實際的數(shù)據(jù)和前后節(jié)點的位置。
  • 你的應用不會隨機訪問數(shù)據(jù)。因為如果你需要 LinkedList 中的第 n 個元素的時候,你需要從第一個元素順序數(shù)到第 n 個數(shù)據(jù),然后讀取數(shù)據(jù)。
  • 你的應用更多的插入和刪除元素,更少的讀取數(shù)據(jù)。因為插入和刪除元素不涉及重排數(shù)據(jù),所以它要比 ArrayList 要快。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • “簡單不先于復雜,而是在復雜之后.” —— Alan Perlis 首行推薦——http://www.jiansh...
    白襯衫少年閱讀 7,571評論 0 11
  • 一.線性表 定義:零個或者多個元素的有限序列。也就是說它得滿足以下幾個條件:??①該序列的數(shù)據(jù)元素是有限的。??②...
    Geeks_Liu閱讀 2,768評論 1 12
  • 在一個方法內(nèi)部定義的變量都存儲在棧中,當這個函數(shù)運行結束后,其對應的棧就會被回收,此時,在其方法體中定義的變量將不...
    Y了個J閱讀 4,575評論 1 14
  • ? 在編寫java程序中,我們最常用的除了八種基本數(shù)據(jù)類型,String對象外還有一個集合類,在我們的的程序中到處...
    Java幫幫閱讀 1,559評論 0 6
  • 媽媽這輩子除了和土地打交道之外就是和孩子打交道了! 在媽媽的整飭下,我家的莊稼地是十里八鄉(xiāng)的莊稼人都交口稱...
    趙國興閱讀 451評論 0 3

友情鏈接更多精彩內(nèi)容