- HashMap的resize的時機和resize的大小,16 0.75 當里面的元素大于24時會進行resize然后resize的大小為 (16 * 0.75)<< 1
- HashTable通過Synchronization來實現(xiàn)線程安全。
- HashMap的有自己的hash方法,可以優(yōu)化hash碰撞,而HashTable直接使用對象的hashcode方法來進行hash計算。
- HashMap支持null value key 而HashTable不支持。
- HashMap使用鏈表+樹的方式來解決Hash碰撞而HashTable只使用鏈表的方式。
- HashMap 當碰撞數(shù)量 >= 7時才會將鏈表轉換成樹結構,且當前的數(shù)組大小大于64
while(true) {
if ((e = ((HashMap.Node)p).next) == null) {
((HashMap.Node)p).next = this.newNode(hash, key, value, (HashMap.Node)null);
if (binCount >= 7) {
this.treeifyBin(tab, hash);
}
break;
}
if (((HashMap.Node)e).hash == hash && ((k = ((HashMap.Node)e).key) == key || key != null && key.equals(k))) {
break;
}
p = e;
++binCount;
}