關於各種List型別特點以及使用的場景

SoulSmoke發表於2024-08-06

在日常開發中,經常使用到ArrayList型別,也就是List介面的實現類,List和Set介面又都繼承了Collection介面。
總不能總是使用ArrayList和HashSet吧?
所以藉此機會梳理一下各個實現類的特點以及使用場景:
1、ArrayList
優點:陣列實現,可以透過索引快速訪問
缺點:
1、插入和刪除元素,需要頻繁移動元素位置
2、陣列空間不夠需要擴容時,會開闢新陣列把就陣列複製過去,耗效能
3、執行緒不安全
2、LinkedList
雙向連結串列實現
優點:使用連結串列實現,適合動態插入和刪除
缺點:
1、隨機訪問元素的速度較慢
2、基於連結串列資料結構的實現,佔用的記憶體空間較大(除了儲存資料本身,還要儲存指標資訊)
3、Vector
基於陣列資料結構實現
優點:執行緒安全
缺點:效率低,插入、刪除、查詢元素所有操作的效率都很低
使用場景:
arrayList
由於有動態擴容的特性,適合在不知道列表大小的時候使用
適合快速隨即查詢和遍歷
不適合頻繁插入和刪除操作
linkedList
適合需要隨機插入、刪除效率要求比較高的時候
可以作為佇列和棧使用
vector
一般開發中很少使用。

相關文章