Java常用集合包適用場景

2021-08-30 23:25:01 字數 1295 閱讀 6951

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...