map原始碼解析

2021-07-17 03:30:23 字數 1240 閱讀 8950

public v put(k key, v value) 

}//若沒有在table[i]位置找到相同的key,則新增key到table[i]位置,新的元素總是在table[i]位置的第乙個元素,原來的元素後移

modcount++;

addentry(hash, key, value, i);

return

null;

}

void addentry(int hash, k key, v value, int bucketindex)
/**

* returns index for hash code h.

*/static

int indexfor(int h, int length)

按位取並,作用上相當於取模mod或者取餘%。

這意味著陣列下標相同,並不表示hashcode相同。

和hashmap的資料結構相同

hashtable 在方法中新增了synchornized 關鍵字,是執行緒安全的。hashmap是執行緒不安全的

hashtable 可以key可以是null,hashmap不可以

hashmap是對map介面的實現,hashtable實現了map介面和dictionary抽象類(沒啥意義)

hashmap的初始容量為16,hashtable初始容量為11,兩者的填充因子預設都是0.75 hashmap擴容時是當前容量翻倍即:capacity*2,hashtable擴容時是容量翻倍+1即:capacity*2+1

兩者計算hash的方法不同

//true表示按照訪問順序迭代,false時表示按照插入順序  

private

final boolean accessorder;

/**

* 雙向鍊錶的表頭元素。

*/private transient entryheader;

/**

* linkedhashmap的entry元素。

*/private static class

entry

extends

hashmap.entry

public

linkedhashmap(int initialcapacity, float loadfactor)

java原始碼解析 Map

an object that maps keys to values.a map cannot contain duplicate keys each key can map to at most one value.將鍵對映到值的物件。不能包含重複的鍵 每個鍵最多可以對映乙個值。map 的類資訊 ...

Java集合之 Map原始碼解析

hashmap 也是我們平時開發中使用頻率很高的雙列集合,直接父類是abstractmap,是基於hash表儲存的一種集合。幾個重要的類變數 hash表的初始化大小,預設為16.是基於陣列實現的。static final int default initial capacity 1 4 aka 16...

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...