LinkList詳解


一. 引言

其實想知道LinkedList是個啥,知道什么是鏈表,什么是數組即可

數組特點

  • 在內存中,數組是一塊連續的區域.
  • 數組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間.三種情況
    1. 有空間沒有被使用
    2. 太多就要擴容數組
    3. 更換數組
  • 插入,刪除效率低.因為其連續性,插入和刪除一個元素其后面的元素都要向前或向后移動
  • 隨機讀取效率高.因為數組是連續的,知道每一個數據的內存地址,可以直接找到給地址的數據
  • 不好擴展,有時候數組空間不夠要重新定義數組

鏈表特點

  • 在內存中可以存在任何地方,不要求連續
  • 每一個數據都保存了下一個數據的內存地址,通過這個地址找到下一個數據.
  • 增加數據和刪除數據很容易.只需要把自己位置告訴前面那個元素就行
  • 查找數據時效率低,因為不具有隨機方文星,所以訪問某個數據時要從第一個數據開始訪問
  • 不指定大小,口占方便.鏈表大小不用定義

數組優點

  • 隨機訪問強
  • 查找速度速度快

數組缺點

  • 插入和刪除效率低
  • 可能浪費內存
  • 內存空間要求高,必須有足夠的連續內存空間
  • 數組大小固定,不能動態拓展

鏈表優點

  • 插入刪除速度快
  • 內存利用率高,不會浪費內存
  • 大小沒有固定,拓展很靈活

鏈表的缺點

  • 不能隨機查找,必須從第一個開始遍歷,查找效率很低

二. ArrayList和LinkList的區別

雖然上面在說數組和鏈表,可是並不是說數組就完全等於ArrayList

ArrayList特點

ArrayList可以看成自動增長容量的數組,其底層實現就是數組

  • 新增數據空間判斷,新增數據的時候判斷是否有空閑空間存儲
  • 擴容需要申請新的連續空間
  • 把老的數組復制過去
  • 新加內容
  • 回收老的數組空間

ArrayList在初始化的時候最好指定長度,指定長度性能比不指定長度性能好很多,數據量越大越明顯,因為這樣不用重復申請空間,復制數組,摧毀老的分配空間了.

LinkList特點

LinkList是一個雙鏈表,在添加和刪除元素時由比ArrayList更好的性能.但在get與set方面弱於ArrayList當然,這些對比都是值數據量很大或者操作很頻繁

  • 鏈表不需要連續的空間
  • 大小不固定


免責聲明!

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



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