JDK各集合的底層實現

2021-08-20 13:23:22 字數 760 閱讀 9929

儲存時:計算key的hash,對映到entry table[hashresult%length];有乙個threshold變數,在某一鍊錶的長度超過預設值時,會發生hashmap的擴容,捅的擴容完成後,會根據entry.hash重新寫入鍊錶。還有乙個loadfactor,裝載/全部容量大於預設值,也會發生擴容。

讀取時:使用一樣的演算法。

jdk1.8中,對hashmap的實現做出了一些改進,比如鍊錶的頭插法改為尾插法(方便記錄threshold的值);超過閾值鍊錶改為紅黑樹表示。

本質上就是hashmap+雙向鍊錶(結點為entry)。每次put進來的entry,除了新增到雜湊表外,還要新增到雙向鍊錶中。

①排序是針對collections.sort的,傳入的引數必須是collection。

②map想使用排序方法,必須先通過entryset()方法,返回由set包裝的entryset物件,再在collection檢視上進行排序。

③迭代器也是建立在collection基礎上的,如果要對map進行遍歷,需要獲取其keyset或者entryset,在set上獲得iterator

各集合之間的區別

1.list 特點 可以新增重複的元素,有順序 list有兩個子類 1 arraylist 優點 get和set呼叫花費常數時間 缺點 新項的插入和現有項的刪除 代價昂貴,除非是在末端進行 2 linkedlist 優點 新項的插入和現有的項的刪除開銷小 缺點 對get和呼叫昂貴2.set 特點 不...

集合的底層實現

arraylist的實現原理 1.arraylist是list介面的可變陣列非同步實現,並允許包括null在內的所有元素。2.底層使用陣列實現。3.該集合是可變長度陣列,陣列擴容時,會將老陣列中的元素重新拷貝乙份到新的陣列中,每次陣列容量增長大約是其容量的1.5倍,這種操作的代價很高。4.採用了fa...

java集合底層實現

set和map的關係 set代表無序,不能重複的集合 map代表key value組成的集合,是一種關聯陣列。map的key要求是不能重複,沒有順序。把map的所有key組合起來就是set。setkeyset hashmap和hashset原理 hashmap底層是用陣列鍊錶儲存的,元素是entry...