① 由hashcode()確定數字下標。
② 由equals()根據比對節點中鍵值對的key確定最終資料。
注:插入均為首部插入,避免尾部遍歷。
因迴圈鍊錶比較亂,故只畫出部分。
相比於hashmap,增加了乙個head節點,並將每乙個節點(增加兩個指標)使用迴圈鍊錶串起來,保證順序。
迴圈雙向鍊錶的頭部存放的是最久訪問的節點或最先插入的節點,尾部為最近訪問的或最近插入的節點,迭代器遍歷方向是從鍊錶的頭部開始到鍊錶尾部結束。
注:雖然hashmap是雜湊化的,但是linkedhashmap可以記錄下元素的插入順序,這樣在擴容時可以保證原有資料順序不變。
3. hashtable
資料結構與hashmap一致。
4. treemap
基於紅黑樹。
執行緒非安全的一維陣列操作。
自動擴容50%。
6. vector
執行緒安全的一維陣列操作。
自動擴容一倍。
對hashmap的封裝。
9. linkedhashset
對linkedhashmap的封裝。
10. treeset
對treemap的封裝。
JAVA學習 基礎部分 集合
集合只能有引用型別 collection 和map平級 arraylist 底層是陣列,查詢快,增刪慢。相對下面那個來說效率高,安全性低 list 增加元素有序性,可重複 linkedlist 底層是鍊錶,查詢慢,增刪快。vector 底層是陣列,查詢快,增刪慢。相對上面那個來說效率低,安全性高 不...
java主要集合類的資料結構
一 list arraylist維護著乙個物件陣列。如果呼叫new arraylist 後,它會預設初始乙個size 10的陣列。每次add操作都要檢查陣列容量,如果不夠,重新設定乙個初始容量1.5倍大小的新陣列,然後再把每個元素copy過去。在陣列中間插入或刪除,都要移動後面的所有元素。使用sys...
資料結構 集合類
2 linkedlist 3 hashmap 4 hashtable arraylist初始長度為0,當第一次呼叫add後,長度變為10,當陣列首次擴容的10個空間用完需要擴容後,會第二次走grow方法來擴容 每次擴容為1.5倍 它的底層是用陣列實現的,所以查詢速度相對linkedlist要快。li...