1. arraylist
基於陣列方式實現,無容量的限制。
在執行插入元素時可能要擴容,在刪除元素時並不會減少陣列的容量。
如果希望相應的縮小陣列容量,可以呼叫trimtosize()
在查詢元素時要遍歷陣列,對於非null的元素採取equals的方式尋找。
非執行緒安全。
2. linkedlist
基於雙向鍊錶機制實現。
元素的插入、移動較快。
非執行緒安全。
3. vector
基於object陣列的方式來實現的。
基於synchronized實現的執行緒安全的arraylist。
在插入元素時容量擴充的機制和arraylist稍有不同:
如果capcacityincrement > 0, 則object陣列的大小擴大為現有size加上capcacityincrement;
如果capcacityincrement < 0, 則object陣列的大小擴大為現有size的兩倍;
4. stack
基於vector實現,支援lifo。
5. hashset
基於hashmap實現,無容量限制。
不允許元素重複。
非執行緒安全。
6. treeset
基於treemap實現,支援排序。
非執行緒安全。
7. hashmap
採用陣列方式儲存key、value構成的entry物件,無容量限制。
基於key hash尋找entry物件存放到陣列的位置,對於hash衝突採用鍊錶的方式來解決。
在插入元素時可能會擴大陣列的容量,在擴大容量時會重新計算hash,並複製物件到新的陣列中。
非執行緒安全。
8. treemap
基於紅黑樹實現,無容量限制。
非執行緒安全。
-----------------------------------
適用場景:
對於查詢和刪除較為頻繁,且元素數量較多的應用,set或map是更好的選擇;
arraylist適用於通過為位置來讀取元素的場景;
linkedlist 適用於要頭尾操作或插入指定位置的場景;
vector 適用於要執行緒安全的arraylist的場景;
stack 適用於執行緒安全的lifo場景;
hashset 適用於對排序沒有要求的非重複元素的存放;
treeset 適用於要排序的非重複元素的存放;
hashmap 適用於大部分key-value的訪問場景;
treemap 適用於需排序存放的key-value場景。
java 集合 幾種集合的區別及適用場景
後台開發工作中經常遇到一些使用集合的場景,幾種集合的優缺點又老是記不住,所以寫了這篇部落格。首先大的集合分為 list,set,map三種,其中list與set是繼承自collection,而map不是。list與set的區別 list中的元素有存放順序,並且可以存放重複元素,檢索效率高,插入刪除效...
TiDB適用場景和不適用場景
一 tidb簡介 tidb 是 pingcap 公司受 google spanner f1 啟發而設計的開源分布式 htap hybrid transactional and analytical processing 資料庫,結合了傳統的 rdbms 和nosql 的最佳特性。tidb 相容 my...
HDFS適用場景和不適用場景
海量資料儲存 hdfs可橫向擴充套件,其儲存的檔案可以支援pb級別或更高階別的資料儲存。高容錯性 資料儲存多個副本,副本丟失後自動恢復。可構建在廉價的機器上,實現線性擴充套件。當集群增加新節點之後,namenode也可以感知,進行負載均衡,將資料分發和備份資料均衡到新的節點上。商用硬體 hadoop...