鏈表和數組的區別


鏈表和數組

數組是有下標索引和data兩部分組成

鏈表是有data和指向下一個數據的指針地址兩部分組成

 

重點介紹:
Vector、ArrayList都是以數組的形式存儲在內存中,所以查詢效率高,新增和刪除效率不高,但是Vector被Synchronized修飾,所以線程是安全的,ArraryList線程不安全。
LinkedList則以鏈表的形式進行存儲,所以查詢效率底,新增和刪除效率高,並且線程不安全。

 

  鏈表 數組
內存占用 不需要連續的內存空間 需要連續的內存空間
大小可變 鏈表的大小可動態變化 數組大小固定,不能動態擴展
增刪 較快,只需要修改前一個元素的指針即可 較慢,需要移動修改元素只有的所有元素
查詢  較慢,只能遍歷查找 較快,可以通過下標直接訪問
在訪問方式上  必須是順序訪問,不能隨機訪問  可以隨機訪問其中的元素
空間的使用上 可以隨意擴大 不能 

  

 
  

 

 

 

 

 

 

 

 

 

單向鏈表和雙向鏈表 

  單向鏈表 雙向鏈表
每個元素只有一個指針只會下一個元素的地址 每個元素有兩個指針只會上一個和下一個元素的地址
查詢 較慢 較快,可以通過二分查找來提速
增刪 較快 更快
存儲效率 略高,除了存儲元素,只會存儲一個指針  較低,除了存儲元素,需要存儲兩個指針
雙向鏈表的增、刪、查均優於單向鏈表,但是目前市面上用的較多的仍為單向鏈表,主要是雙向鏈表的多一個指針,在存儲效率上低於單向鏈表。一個指針在32位系統需要4個字節來存儲,在64位系統需要8個字節來存儲


免責聲明!

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



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