Java部分集合類內部資料結構簡介

2021-07-30 19:06:14 字數 1246 閱讀 7333

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