HashMap、HashTable

  • 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;
                }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容