前置閱讀:html
jdk源碼閱讀-Map : http://www.cnblogs.com/ccode/p/4645683.htmlapi
在前置閱讀的文章裏,已經提到HashMap是基於Hash表實現的,因此在講解HashMap以前 ,有必要提早了解下Hash的原理。函數
。。。this
咱們能夠從這個網址中找到HashMap對應的API列表,相信熟悉Java的人應該對這些方法已經很熟悉了。spa
http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4.net
方法和屬性列表:code
構造函數:htm
Hash()blog
構造函數:ci
1 public HashMap(int initialCapacity, float loadFactor) { 2 if (initialCapacity < 0) //若是 3 throw new IllegalArgumentException("Illegal initial capacity: " + 4 initialCapacity); 5 if (initialCapacity > MAXIMUM_CAPACITY) 6 initialCapacity = MAXIMUM_CAPACITY; 7 if (loadFactor <= 0 || Float.isNaN(loadFactor)) 8 throw new IllegalArgumentException("Illegal load factor: " + 9 loadFactor); 10 11 this.loadFactor = loadFactor; 12 threshold = initialCapacity; 13 init(); 14 }
該構造函數通常狀況下初學者可能用的較少。該構造函數的定義是
HashMap():
1 public HashMap() { 2 this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR); 3 }
會自動調用帶String參數的構造方法
構造一個空的HashMap。其默認的初始容量爲 16,負載因子爲 0.75
在這裏須要介紹幾個概念:
初始容量:
負載因子:散列表的實際元素數目(n)/ 散列表的容量(m)。