HashMap基本講解

2021-10-10 01:12:31 字數 759 閱讀 9790

陣列:大小固定,連續的記憶體,可通過index來查詢很快,新增元素如果超過陣列的長度需要重新開闢陣列空間把原陣列複製過去,所以新增慢

鍊錶:不是連續的記憶體空間,上乙個儲存下乙個的記憶體位址,插入只需要把記憶體位址指向改變即可,所以插入塊元素很快,但是查詢的時候需要通過第乙個元素拿到第二個元素的記憶體位址。再通過第二個元素拿到第三個元素的記憶體位址,依次查詢,所以查詢速度很慢

雜湊表

hash:hash也稱雜湊,基本原理是把任意長度的輸入,通過hash演算法轉換成固定長度的輸出,輸出值即為雜湊值。

hash的特點:

1、從hash值不可推導出原始的資料

2、輸入資料微小變化會得到完全不同的hash值,相同的資料會得到相同的值

3、hash演算法的執行效率要高效,即使很長的文字也能快速計算出hash值

4、hash演算法衝突的概率要很小

由於hash原理是將輸入空間對映成hash空間內,而hash值得空間遠小於輸入的空間,根據抽屜(把十個蘋果放進九個抽屜裡面,無論怎麼放,至少乙個抽屜裡面不少於兩個蘋果)原理。

hashmap:的底層其實就是陣列+鍊錶+紅黑樹,陣列初始長度是16,當所有元素數量達到64個並且單個鍊錶的數量大於8時,鍊錶結構將公升級為紅黑樹

HashMap 1 7 原始碼講解

1 hashseed 用於鍵的雜湊碼計算上,用於減少雜湊衝突。通過下面所述的inithashseedasneeded方法來進行初始化 2 threshold 表示可以存放的最大量,它的值為loadfactory 陣列容量,但是存在最大值為1 30 1 即2 30 1 3 loadfactory 負載...

hashmap的基本模型理解

1.hashmap的預設長度為16.put操作 首先計算key的hash值,key為空時hash為0,如果是第乙個值則建立乙個node的陣列物件,陣列的長度為16 因為陣列的長度為16,所以陣列下標的取值為 0 15 0 hash值除以15取餘 15 那麼第乙個node物件下標就是 key的hash...

ActionScript基本語法講解

var a int 3 var b int 4 b 9 trace a的值為 a trace b的值為 b var x1 array new array 1,2,3 var y1 array x1 y1 0 4 trace a現在的值為 x1 trace b現在的值為 y1 var q array ...