{"id":5214,"date":"2021-05-30T11:03:30","date_gmt":"2021-05-30T03:03:30","guid":{"rendered":"https:\/\/www.xttblog.com\/?p=5214"},"modified":"2021-05-30T11:03:30","modified_gmt":"2021-05-30T03:03:30","slug":"%e5%88%86%e4%ba%ab%e4%b8%80%e4%ba%9b-java-hashmap-%e9%ab%98%e7%ba%a7%e9%9d%a2%e8%af%95%e9%a2%98%ef%bc%81","status":"publish","type":"post","link":"https:\/\/www.xttblog.com\/?p=5214","title":{"rendered":"\u5206\u4eab\u4e00\u4e9b Java HashMap \u9ad8\u7ea7\u9762\u8bd5\u9898\uff01"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u4eca\u5e74\u4ee5\u6765\uff0c\u6211\u9762\u8bd5\u8fc7\u5f88\u591a\u5019\u9009\u4eba\u3002\u5176\u4e2d\u4e5f\u6709\u4e0d\u5c11\u4eba\u80cc\u8fc7\u9762\u8bd5\u9898\uff0c\u4f46\u662f\u7ecf\u8fc7\u6211\u7684\u8fd9\u5957\u9762\u8bd5\u9898\u5957\u9910\uff0c\u57fa\u672c\u4e0a\u6ca1\u5565\u4eba\u80fd\u901a\u8fc7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 Java \u9762\u8bd5\u4e2d\uff0cHashMap \u57fa\u672c\u5fc5\u95ee\uff0c\u53ea\u662f\u95ee\u6cd5\u5404\u6709\u4e0d\u540c\u800c\u5df2\u3002HashMap \u6709\u975e\u5e38\u591a\u7684\u77e5\u8bc6\u70b9\uff0c\u5b66\u597d\u5b83\u5bf9\u6574\u4e2a\u7f16\u7a0b\u601d\u60f3\u6709\u975e\u5e38\u5927\u7684\u5e2e\u52a9\u3002\u4e0d\u5e78\u7684\u662f\uff0c\u5f88\u5927\u90e8\u5206\u4eba\u90fd\u62dc\u5012\u5728 HashMap \u7684\u77f3\u69b4\u88d9\u5e95\u4e0b!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HashMap\u4e3a\u4ec0\u4e48\u5982\u6b64\u53d7\u9762\u8bd5\u5b98\u9752\u7750\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u89c9\u5f97\u5176\u4e2d\u67094\u4e2a\u539f\u56e0\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\nHashMap \u5728\u6211\u4eec\u5de5\u4f5c\u4e2d\u4f7f\u7528\u9891\u7387\u76f8\u5f53\u9ad8\n<\/li><li>\nHashMap \u7684\u77e5\u8bc6\u70b9\u6bd4\u8f83\u591a\n<\/li><li>\nHashMap \u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\n<\/li><li>\n\u5927\u5382\u90fd\u5728\u95ee\uff0c\u5c82\u80fd\u4e0d\u95ee\uff1f\n<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u5c31\u662f\u6211\u7ed9\u5927\u5bb6\u51c6\u5907\u7684 HashMap \u8fde\u73af\u70ae\uff0c\u8fd9\u4e2a\u8fde\u73af\u70ae\u5c31\u76f8\u5f53\u4e8e\u9ad8\u8003\u771f\u9898\u6f14\u7ec3\u4e00\u6837\uff0c\u53ef\u80fd\u6ca1\u6709\u5b8c\u5168\u4e00\u6837\u7684\uff0c\u53ea\u662f\u95ee\u6cd5\u4e0d\u540c\u7f62\u4e86\uff0c\u8fd9\u4e2a\u4e3b\u8981\u5f97\u76ca\u4e8e\u54b1\u4eec\u6c49\u8bed\u535a\u5927\u7cbe\u6df1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u662fHashMap\u768425\u8fde\u73af\u70ae\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\n\u8bf4\u8bf4 HashMap \u5e95\u5c42\u6570\u636e\u7ed3\u6784\u662f\u600e\u6837\u7684\uff1f\n<\/li><li>\n\u8c08\u4e00\u4e0b HashMap\u7684\u7279\u6027\uff1f\n<\/li><li>\n\u4f7f\u7528 HashMap \u65f6\uff0c\u5f53\u4e24\u4e2a\u5bf9\u8c61\u7684 hashCode \u76f8\u540c\u600e\u4e48\u529e\uff1f\n<\/li><li>\nHashMap \u7684\u54c8\u5e0c\u51fd\u6570\u600e\u4e48\u8bbe\u8ba1\u7684\u5417\uff1f\n<\/li><li>\nHashMap \u904d\u5386\u65b9\u6cd5\u6709\u51e0\u79cd\uff1f\n<\/li><li>\n\u4e3a\u4ec0\u4e48\u91c7\u7528 hashcode \u7684\u9ad8 16 \u4f4d\u548c\u4f4e 16 \u4f4d\u5f02\u6216\u80fd\u964d\u4f4e hash \u78b0\u649e\uff1fhash \u51fd\u6570\u80fd\u4e0d\u80fd\u76f4\u63a5\u7528 key \u7684 hashcode\uff1f\n<\/li><li>\n\u89e3\u51b3 hash \u51b2\u7a81\u7684\u6709\u51e0\u79cd\u65b9\u6cd5\uff1f\n<\/li><li>\n\u4e3a\u4ec0\u4e48\u8981\u7528\u5f02\u6216\u8fd0\u7b97\u7b26\uff1f\n<\/li><li>\nHashMap \u7684 table \u7684\u5bb9\u91cf\u5982\u4f55\u786e\u5b9a\uff1f\n<\/li><li>\n\u8bf7\u89e3\u91ca\u4e00\u4e0b HashMap \u7684\u53c2\u6570 loadFactor\uff0c\u5b83\u7684\u4f5c\u7528\u662f\u4ec0\u4e48\n<\/li><li>\n\u8bf4\u8bf4 HashMap \u4e2d put \u65b9\u6cd5\u7684\u8fc7\u7a0b\n<\/li><li>\n\u5f53\u94fe\u8868\u957f\u5ea6&nbsp;&gt;= 8 \u65f6\uff0c\u4e3a\u4ec0\u4e48\u8981\u5c06\u94fe\u8868\u8f6c\u6362\u6210\u7ea2\u9ed1\u6811\uff1f\n<\/li><li>\nnew HashMap(18);\u6b64\u65f6 HashMap \u521d\u59cb\u5bb9\u91cf\u4e3a\u591a\u5c11\uff1f\n<\/li><li>\n\u8bf4\u8bf4 resize \u6269\u5bb9\u7684\u8fc7\u7a0b\n<\/li><li>\n\u8bf4\u8bf4 hashMap \u4e2d get \u662f\u5982\u4f55\u5b9e\u73b0\u7684\uff1f\n<\/li><li>\n\u62c9\u94fe\u6cd5\u5bfc\u81f4\u7684\u94fe\u8868\u8fc7\u6df1\u95ee\u9898\u4e3a\u4ec0\u4e48\u4e0d\u7528\u4e8c\u53c9\u67e5\u627e\u6811\u4ee3\u66ff\uff0c\u800c\u9009\u62e9\u7ea2\u9ed1\u6811\uff1f\u4e3a\u4ec0\u4e48\u4e0d\u4e00\u76f4\u4f7f\u7528\u7ea2\u9ed1\u6811\uff1f\n<\/li><li>\n\u8bf4\u8bf4\u4f60\u5bf9\u7ea2\u9ed1\u6811\u7684\u4e86\u89e3\n<\/li><li>\nJDK8 \u4e2d\u5bf9 HashMap \u505a\u4e86\u54ea\u4e9b\u6539\u53d8\uff1f\n<\/li><li>\nHashMap \u4e2d\u7684 key \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u7c7b\u4f5c\u4e3a key \u5417\uff1f\n<\/li><li>\nHashMap \u7684\u957f\u5ea6\u4e3a\u4ec0\u4e48\u662f 2 \u7684 N \u6b21\u65b9\u5462\uff1f\n<\/li><li>\nHashMap\uff0cLinkedHashMap\uff0cTreeMap \u6709\u4ec0\u4e48\u533a\u522b\uff1f\n<\/li><li>\n\u8bf4\u8bf4\u4ec0\u4e48\u662f fail-fast\uff1f\n<\/li><li>\nHashMap \u548c HashTable \u6709\u4ec0\u4e48\u533a\u522b\uff1f\n<\/li><li>\nHashMap \u662f\u7ebf\u7a0b\u5b89\u5168\u7684\u5417\uff1f\n<\/li><li>\n\u5982\u4f55\u89c4\u907f HashMap \u7684\u7ebf\u7a0b\u4e0d\u5b89\u5168\uff1f\n<\/li><li>\nHashMap \u548c ConcurrentHashMap \u7684\u533a\u522b\uff1f\n<\/li><li>\n\u4e3a\u4ec0\u4e48 ConcurrentHashMap \u6bd4 HashTable \u6548\u7387\u8981\u9ad8\uff1f\n<\/li><li>\n\u8bf4\u8bf4 ConcurrentHashMap \u4e2d\u7684\u9501\u673a\u5236\n<\/li><li>\n\u5728 JDK 1.8 \u4e2d\uff0cConcurrentHashMap \u4e3a\u4ec0\u4e48\u8981\u4f7f\u7528\u5185\u7f6e\u9501 synchronized \u6765\u4ee3\u66ff\u91cd\u5165\u9501 ReentrantLock\uff1f\n<\/li><li>\n\u80fd\u5bf9 ConcurrentHashMap \u505a\u4e2a\u7b80\u5355\u4ecb\u7ecd\u5417\uff1f\n<\/li><li>\n\u719f\u6089 ConcurrentHashMap \u7684\u5e76\u53d1\u5ea6\u5417\uff1f\n<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">java\u96c6\u5408\u77e5\u8bc6\u603b\u7ed3<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm0.png\" alt=\"\u56fe\u7247\" \/><figcaption>HashMap \u9762\u8bd5\u8111\u56fe<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6211\u4eec\u6b63\u5f0f\u5f00\u59cb\u8fde\u73af\u70ae<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm1.gif\" alt=\"\u56fe\u7247\" \/><figcaption>HashMap \u9762\u8bd5\u8fde\u73af\u70ae<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1\u3001\u8bf4\u8bf4 HashMap \u5e95\u5c42\u6570\u636e\u7ed3\u6784\u662f\u600e\u6837\u7684\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HashMap \u5e95\u5c42\u662f hash \u6570\u7ec4\u548c\u5355\u5411\u94fe\u8868\u5b9e\u73b0\uff0cjdk8 \u540e\u91c7\u7528\u6570\u7ec4+\u94fe\u8868+\u7ea2\u9ed1\u6811\u7684\u6570\u636e\u7ed3\u6784\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2\u3001\u8bf4\u8bf4 HashMap \u7684\u5de5\u4f5c\u539f\u7406<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\u5982\u679c\u7b2c\u4e00\u9898\u6ca1\u95ee\uff0c\u76f4\u63a5\u95ee\u539f\u7406\uff0c\u90a3\u5c31\u5fc5\u987b\u628a HashMap \u7684\u6570\u636e\u7ed3\u6784\u8bf4\u6e05\u695a\u3002<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">HashMap \u5e95\u5c42\u662f hash \u6570\u7ec4\u548c\u5355\u5411\u94fe\u8868\u5b9e\u73b0\uff0cJDK8 \u540e\u91c7\u7528\u6570\u7ec4+\u94fe\u8868+\u7ea2\u9ed1\u6811\u7684\u6570\u636e\u7ed3\u6784\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4eec\u901a\u8fc7 put \u548c get \u5b58\u50a8\u548c\u83b7\u53d6\u5bf9\u8c61\u3002\u5f53\u6211\u4eec\u7ed9 put()\u65b9\u6cd5\u4f20\u9012\u952e\u548c\u503c\u65f6\uff0c\u5148\u5bf9\u952e\u505a\u4e00\u4e2a hashCode() \u7684\u8ba1\u7b97\u6765\u5f97\u5230\u5b83\u5728 bucket \u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u6765\u5b58\u50a8 Entry \u5bf9\u8c61\u3002\u5f53\u83b7\u53d6\u5bf9\u8c61\u65f6\uff0c\u901a\u8fc7 get \u83b7\u53d6\u5230 bucket \u7684\u4f4d\u7f6e\uff0c\u518d\u901a\u8fc7\u952e\u5bf9\u8c61\u7684 equals() \u65b9\u6cd5\u627e\u5230\u6b63\u786e\u7684\u952e\u503c\u5bf9\uff0c\u7136\u540e\u5728\u8fd4\u56de\u503c\u5bf9\u8c61\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3\u3001HashMap \u4e2d\uff0chashCode \u76f8\u540c\u600e\u4e48\u529e\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a HashCode \u76f8\u540c\uff0c\u4e0d\u4e00\u5b9a\u5c31\u662f\u76f8\u7b49\u7684\uff08equals \u65b9\u6cd5\u6bd4\u8f83\uff09\uff0c\u6240\u4ee5\u4e24\u4e2a\u5bf9\u8c61\u6240\u5728\u6570\u7ec4\u7684\u4e0b\u6807\u76f8\u540c\uff0c&#8221;\u78b0\u649e&#8221;\u5c31\u6b64\u53d1\u751f\u3002\u53c8\u56e0\u4e3a HashMap \u4f7f\u7528\u94fe\u8868\u5b58\u50a8\u5bf9\u8c61\uff0c\u8fd9\u4e2a Node \u4f1a\u5b58\u50a8\u5230\u94fe\u8868\u4e2d\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4\u3001HashMap \u7684\u54c8\u5e0c\u51fd\u6570\u600e\u4e48\u8bbe\u8ba1\u7684\u5417\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">hash \u51fd\u6570\u662f\u5148\u62ff\u5230\u901a\u8fc7 key \u7684 hashCode \uff0c\u662f 32 \u4f4d\u7684 int \u503c\uff0c\u7136\u540e\u8ba9 hashCode \u7684\u9ad8 16 \u4f4d\u548c\u4f4e 16 \u4f4d\u8fdb\u884c\u5f02\u6216\u64cd\u4f5c\u3002\u4e24\u4e2a\u597d\u5904\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\n\u4e00\u5b9a\u8981\u5c3d\u53ef\u80fd\u964d\u4f4e hash \u78b0\u649e\uff0c\u8d8a\u5206\u6563\u8d8a\u597d\uff1b\n<\/li><li>\n\u7b97\u6cd5\u4e00\u5b9a\u8981\u5c3d\u53ef\u80fd\u9ad8\u6548\uff0c\u56e0\u4e3a\u8fd9\u662f\u9ad8\u9891\u64cd\u4f5c, \u56e0\u6b64\u91c7\u7528\u4f4d\u8fd0\u7b97\uff1b\n<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">5\u3001HashMap\u904d\u5386\u65b9\u6cd5\u6709\u51e0\u79cd\uff1f<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\nIterator \u8fed\u4ee3\u5668\n<\/li><li>\n\u6700\u5e38\u89c1\u7684\u4f7f\u7528\u65b9\u5f0f\uff0c\u53ef\u540c\u65f6\u5f97\u5230 key\u3001value \u503c\n<\/li><li>\n\u4f7f\u7528 foreach \u65b9\u5f0f\uff08JDK1.8 \u624d\u6709\uff09\n<\/li><li>\n\u901a\u8fc7 key \u7684 set \u96c6\u5408\u904d\u5386\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6\u3001\u4e3a\u4ec0\u4e48\u91c7\u7528 hashcode \u7684\u9ad8 16 \u4f4d\u548c\u4f4e 16 \u4f4d\u5f02\u6216\u80fd\u964d\u4f4e hash \u78b0\u649e\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a key.hashCode() \u51fd\u6570\u8c03\u7528\u7684\u662f key \u952e\u503c\u7c7b\u578b\u81ea\u5e26\u7684\u54c8\u5e0c\u51fd\u6570\uff0c\u8fd4\u56de int \u578b\u6563\u5217\u503c\u3002int \u503c\u8303\u56f4\u4e3a<code>-2147483648 ~ 2147483647<\/code>\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbe\u60f3\uff0cHashMap \u6570\u7ec4\u7684\u521d\u59cb\u5927\u5c0f\u4e3a 16\uff0c\u5047\u8bbe\u6211\u73b0\u5728\u6709\u4e00\u4e2a key \u7684 hash \u503c\u4e3a<code>2147483647<\/code>\uff0c\u4e0d\u8fdb\u884c\u4f4d\u8fd0\u7b97\u7684\u8bdd\uff0c\u5b58\u50a8\u7684\u4e0b\u6807\u5c31\u4f1a\u8d85\u8fc7\u5f53\u524d\u6570\u7ec4\u7684\u957f\u5ea6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u6570\u7ec4\u7684\u957f\u5ea6\u53d6\u6a21\u8fd0\u7b97\uff0c\u5f97\u5230\u7684\u4f59\u6570\u624d\u80fd\u7528\u6765\u8bbf\u95ee\u6570\u7ec4\u4e0b\u6807\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7\u3001\u89e3\u51b3 hash \u51b2\u7a81\u7684\u6709\u51e0\u79cd\u65b9\u6cd5\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001<strong>\u300c\u518d\u54c8\u5e0c\u6cd5\u300d<\/strong>\uff1a\u5982\u679c hash \u51fa\u7684 index \u5df2\u7ecf\u6709\u503c\uff0c\u5c31\u518d hash\uff0c\u4e0d\u884c\u7ee7\u7eedhash\uff0c\u76f4\u81f3\u627e\u5230\u7a7a\u7684 index \u4f4d\u7f6e\uff0c\u8981\u76f8\u4fe1\u778e\u732b\u603b\u80fd\u78b0\u4e0a\u6b7b\u8017\u5b50\u3002\u8fd9\u4e2a\u529e\u6cd5\u6700\u5bb9\u6613\u60f3\u5230\u3002\u4f46\u67092\u4e2a\u7f3a\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n\u6bd4\u8f83\u6d6a\u8d39\u7a7a\u95f4\uff0c\u6d88\u8017\u6548\u7387\u3002\u6839\u672c\u539f\u56e0\u8fd8\u662f\u6570\u7ec4\u7684\u957f\u5ea6\u662f\u56fa\u5b9a\u4e0d\u53d8\u7684\uff0c\u4e0d\u65ad hash \u627e\u51fa\u7a7a\u7684 index\uff0c\u53ef\u80fd\u8d8a\u754c\uff0c\u8fd9\u65f6\u5c31\u8981\u521b\u5efa\u65b0\u6570\u7ec4\uff0c\u800c\u8001\u6570\u7ec4\u7684\u6570\u636e\u4e5f\u9700\u8981\u8fc1\u79fb\u3002\u968f\u7740\u6570\u7ec4\u8d8a\u6765\u8d8a\u5927\uff0c\u6d88\u8017\u4e0d\u53ef\u5c0f\u89d1\u3002\n<\/li><li>\nget \u4e0d\u5230\uff0c\u6216\u8005\u8bf4 get \u7b97\u6cd5\u590d\u6742\u3002\u8fdb\u662f\u8fdb\u53bb\u4e86\uff0c\u60f3\u51fa\u6765\u5c31\u6ca1\u90a3\u4e48\u5bb9\u6613\u4e86\u3002\n<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001<strong>\u300c\u5f00\u653e\u5730\u5740\u65b9\u6cd5\u300d<\/strong>\uff1a\u5982\u679c hash \u51fa\u7684 index \u5df2\u7ecf\u6709\u503c\uff0c\u901a\u8fc7\u7b97\u6cd5\u5728\u5b83\u524d\u9762\u6216\u540e\u9762\u7684\u82e5\u5e72\u4f4d\u7f6e\u5bfb\u627e\u7a7a\u4f4d\uff0c\u8fd9\u4e2a\u548c\u518d hash \u7b97\u6cd5\u5dee\u522b\u4e0d\u5927\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001<strong>\u300c\u5efa\u7acb\u516c\u5171\u6ea2\u51fa\u533a\uff1a\u300d<\/strong>&nbsp;\u628a\u51b2\u7a81\u7684 hash \u503c\u653e\u5230\u53e6\u5916\u4e00\u5757\u6ea2\u51fa\u533a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001<strong>\u300c\u94fe\u5f0f\u5730\u5740\u6cd5\uff1a\u300d<\/strong>&nbsp;\u628a\u4ea7\u751f hash \u51b2\u7a81\u7684 hash \u503c\u4ee5\u94fe\u8868\u5f62\u5f0f\u5b58\u50a8\u5728 index \u4f4d\u7f6e\u4e0a\u3002HashMap \u7528\u7684\u5c31\u662f\u8be5\u65b9\u6cd5\u3002\u4f18\u70b9\u662f\u4e0d\u9700\u8981\u53e6\u5916\u5f00\u8f9f\u65b0\u7a7a\u95f4\uff0c\u4e5f\u4e0d\u4f1a\u4e22\u5931\u6570\u636e\uff0c\u5bfb\u5740\u4e5f\u6bd4\u8f83\u7b80\u5355\u3002\u4f46\u662f\u968f\u7740 hash \u94fe\u8d8a\u6765\u8d8a\u957f\uff0c\u5bfb\u5740\u4e5f\u662f\u66f4\u52a0\u8017\u65f6\u3002\u597d\u7684 hash \u7b97\u6cd5\u5c31\u662f\u8981\u8ba9\u94fe\u5c3d\u91cf\u77ed\uff0c\u6700\u597d\u4e00\u4e2a index \u4e0a\u53ea\u6709\u4e00\u4e2a\u503c\u3002\u4e5f\u5c31\u662f\u5c3d\u53ef\u80fd\u5730\u4fdd\u8bc1\u6563\u5217\u5730\u5740\u5206\u5e03\u5747\u5300\uff0c\u540c\u65f6\u8981\u8ba1\u7b97\u7b80\u5355\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8\u3001\u4e3a\u4ec0\u4e48\u8981\u7528\u5f02\u6216\u8fd0\u7b97\u7b26\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u8bc1\u4e86\u5bf9\u8c61\u7684 hashCode \u7684 32 \u4f4d\u503c\u53ea\u8981\u6709\u4e00\u4f4d\u53d1\u751f\u6539\u53d8\uff0c\u6574\u4e2a hash() \u8fd4\u56de\u503c\u5c31\u4f1a\u6539\u53d8\u3002\u5c3d\u53ef\u80fd\u7684\u51cf\u5c11\u78b0\u649e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9\u3001HashMap \u7684 table \u7684\u5bb9\u91cf\u5982\u4f55\u786e\u5b9a\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460\u3001table \u6570\u7ec4\u5927\u5c0f\u662f\u7531 capacity \u8fd9\u4e2a\u53c2\u6570\u786e\u5b9a\u7684\uff0c\u9ed8\u8ba4\u662f 16\uff0c\u4e5f\u53ef\u4ee5\u6784\u9020\u65f6\u4f20\u5165\uff0c\u6700\u5927\u9650\u5236\u662f 1 &lt;&lt; 30\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461\u3001loadFactor \u662f\u88c5\u8f7d\u56e0\u5b50\uff0c\u4e3b\u8981\u76ee\u7684\u662f\u7528\u6765\u786e\u8ba4 table \u6570\u7ec4\u662f\u5426\u9700\u8981\u52a8\u6001\u6269\u5c55\uff0c\u9ed8\u8ba4\u503c\u662f 0.75\uff0c\u6bd4\u5982 table \u6570\u7ec4\u5927\u5c0f\u4e3a 16\uff0c\u88c5\u8f7d\u56e0\u5b50\u4e3a 0.75 \u65f6\uff0cthreshold \u5c31\u662f 12\uff0c\u5f53 table \u7684\u5b9e\u9645\u5927\u5c0f\u8d85\u8fc7 12 \u65f6\uff0ctable \u5c31\u9700\u8981\u52a8\u6001\u6269\u5bb9\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462\u3001\u6269\u5bb9\u65f6\uff0c\u8c03\u7528 resize() \u65b9\u6cd5\uff0c\u5c06 table \u957f\u5ea6\u53d8\u4e3a\u539f\u6765\u7684\u4e24\u500d\uff08\u6ce8\u610f\u662f table \u957f\u5ea6\uff0c\u800c\u4e0d\u662f threshold\uff09\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2463\u3001\u5982\u679c\u6570\u636e\u5f88\u5927\u7684\u60c5\u51b5\u4e0b\uff0c\u6269\u5c55\u65f6\u5c06\u4f1a\u5e26\u6765\u6027\u80fd\u7684\u635f\u5931\uff0c\u5728\u6027\u80fd\u8981\u6c42\u5f88\u9ad8\u7684\u5730\u65b9\uff0c\u8fd9\u79cd\u635f\u5931\u5f88\u53ef\u80fd\u5f88\u81f4\u547d\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10\u3001\u8bf7\u89e3\u91ca\u4e00\u4e0b HashMap \u7684\u53c2\u6570 loadFactor\uff0c\u5b83\u7684\u4f5c\u7528\u662f\u4ec0\u4e48<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">loadFactor \u8868\u793a HashMap \u7684\u62e5\u6324\u7a0b\u5ea6\uff0c\u5f71\u54cd hash \u64cd\u4f5c\u5230\u540c\u4e00\u4e2a\u6570\u7ec4\u4f4d\u7f6e\u7684\u6982\u7387\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9ed8\u8ba4 loadFactor \u7b49\u4e8e0.75\uff0c\u5f53 HashMap \u91cc\u9762\u5bb9\u7eb3\u7684\u5143\u7d20\u5df2\u7ecf\u8fbe\u5230 HashMap \u6570\u7ec4\u957f\u5ea6\u7684 75% \u65f6\uff0c\u8868\u793a HashMap \u592a\u6324\u4e86\uff0c\u9700\u8981\u6269\u5bb9\uff0c\u5728 HashMap \u7684\u6784\u9020\u5668\u4e2d\u53ef\u4ee5\u5b9a\u5236 loadFactor\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11\u3001\u8bf4\u8bf4 HashMap \u4e2d put \u65b9\u6cd5\u7684\u8fc7\u7a0b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8e JDK \u7248\u672c\u4e2d HashMap \u8bbe\u8ba1\u4e0a\u5b58\u5728\u5dee\u5f02\uff0c\u8fd9\u91cc\u8bf4\u8bf4 JDK7 \u548c JDK8 \u4e2d\u7684\u533a\u522b\uff1a<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm2.png\" alt=\"\u56fe\u7247\" \/><figcaption>HashMap \u4e2d put \u65b9\u6cd5 jdk1.7\u548c jdk1.8 \u7684\u533a\u522b<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5177\u4f53 put \u6d41\u7a0b\uff0c\u8bf7\u53c2\u7167\u4e0b\u56fe\u8fdb\u884c\u56de\u7b54\uff1a<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm3.png\" alt=\"\u56fe\u7247\" \/><figcaption>HashMap put \u65b9\u6cd5\u5904\u7406\u6d41\u7a0b<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">12\u3001\u5f53\u94fe\u8868\u957f\u5ea6&nbsp;&gt;= 8 \u4e14\u6570\u7ec4\u957f\u5ea6 &gt;= 64 \u65f6\uff0c\u4e3a\u4ec0\u4e48\u8981\u5c06\u94fe\u8868\u8f6c\u6362\u6210\u7ea2\u9ed1\u6811\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u7ea2\u9ed1\u6811\u7684\u5e73\u5747\u67e5\u627e\u957f\u5ea6\u662f log(n)\uff0c\u957f\u5ea6\u4e3a 8 \u7684\u65f6\u5019\uff0c\u5e73\u5747\u67e5\u627e\u957f\u5ea6\u4e3a 3\uff0c\u5982\u679c\u7ee7\u7eed\u4f7f\u7528\u94fe\u8868\uff0c\u5e73\u5747\u67e5\u627e\u957f\u5ea6\u4e3a 8\/2=4\uff0c\u6240\u4ee5\uff0c\u5f53\u94fe\u8868\u957f\u5ea6&nbsp;&gt;= 8 \u4e14\u6570\u7ec4\u957f\u5ea6 &gt;= 64 \u65f6\uff0c\u6709\u5fc5\u8981\u5c06\u94fe\u8868\u8f6c\u6362\u6210\u7ea2\u9ed1\u6811\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">13\u3001new HashMap(18) \u6b64\u65f6 HashMap \u521d\u59cb\u5bb9\u91cf\u4e3a\u591a\u5c11\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bb9\u91cf\u4e3a 32\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 HashMap \u4e2d\u6709\u4e2a\u9759\u6001\u65b9\u6cd5 tableSizeFor \uff0ctableSizeFor \u65b9\u6cd5\u4fdd\u8bc1\u51fd\u6570\u8fd4\u56de\u503c\u662f\u5927\u4e8e\u7b49\u4e8e\u7ed9\u5b9a\u53c2\u6570 initialCapacity \u6700\u5c0f\u7684 2 \u7684\u5e42\u6b21\u65b9\u7684\u6570\u503c \u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static\u00a0final\u00a0int\u00a0tableSizeFor(int\u00a0cap)\u00a0{\n\u00a0\u00a0int\u00a0n\u00a0=\u00a0cap\u00a0-\u00a01;\n\u00a0\u00a0n\u00a0|=\u00a0n\u00a0&gt;&gt;&gt;\u00a01;\n\u00a0\u00a0n\u00a0|=\u00a0n\u00a0&gt;&gt;&gt;\u00a02;\n\u00a0\u00a0n\u00a0|=\u00a0n\u00a0&gt;&gt;&gt;\u00a04;\n\u00a0\u00a0n\u00a0|=\u00a0n\u00a0&gt;&gt;&gt;\u00a08;\n\u00a0\u00a0n\u00a0|=\u00a0n\u00a0&gt;&gt;&gt;\u00a016;\n\u00a0\u00a0return\u00a0(n\u00a0=\u00a0MAXIMUM_CAPACITY)\u00a0?\u00a0MAXIMUM_CAPACITY\u00a0:\u00a0n\u00a0+\u00a01;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">14\u3001\u8bf4\u8bf4 resize \u6269\u5bb9\u7684\u8fc7\u7a0b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u6570\u7ec4\uff0c\u5176\u5bb9\u91cf\u4e3a\u65e7\u6570\u7ec4\u7684\u4e24\u500d\uff0c\u5e76\u91cd\u65b0\u8ba1\u7b97\u65e7\u6570\u7ec4\u4e2d\u7ed3\u70b9\u7684\u5b58\u50a8\u4f4d\u7f6e\u3002\u7ed3\u70b9\u5728\u65b0\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u53ea\u6709\u4e24\u79cd\uff0c\u539f\u4e0b\u6807\u4f4d\u7f6e\u6216\u539f\u4e0b\u6807+\u65e7\u6570\u7ec4\u7684\u5927\u5c0f\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm4.png\" alt=\"\u56fe\u7247\" \/><figcaption>HashMap resize \u6269\u5bb9 JDK1.7 \u548c JDK1.8 \u4e2d\u7684\u533a\u522b<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">15\u3001\u8bf4\u8bf4 hashMap \u4e2d get \u662f\u5982\u4f55\u5b9e\u73b0\u7684\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9 key \u7684 hashCode \u8fdb\u884c hash \u503c\u8ba1\u7b97\uff0c\u4e0e\u8fd0\u7b97\u8ba1\u7b97\u4e0b\u6807\u83b7\u53d6 bucket \u4f4d\u7f6e\uff0c\u5982\u679c\u5728\u6876\u7684\u9996\u4f4d\u4e0a\u5c31\u53ef\u4ee5\u627e\u5230\u5c31\u76f4\u63a5\u8fd4\u56de\uff0c\u5426\u5219\u5728\u6811\u4e2d\u627e\u6216\u8005\u94fe\u8868\u4e2d\u904d\u5386\u627e\uff0c\u5982\u679c\u6709hash \u51b2\u7a81\uff0c\u5219\u5229\u7528 equals \u65b9\u6cd5\u53bb\u904d\u5386\u94fe\u8868\u67e5\u627e\u8282\u70b9\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">16\u3001\u62c9\u94fe\u6cd5\u5bfc\u81f4\u7684\u94fe\u8868\u8fc7\u6df1\u95ee\u9898\u4e3a\u4ec0\u4e48\u4e0d\u7528\u4e8c\u53c9\u67e5\u627e\u6811\u4ee3\u66ff\uff0c\u800c\u9009\u62e9\u7ea2\u9ed1\u6811\uff1f\u4e3a\u4ec0\u4e48\u4e0d\u4e00\u76f4\u4f7f\u7528\u7ea2\u9ed1\u6811\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e4b\u6240\u4ee5\u9009\u62e9\u7ea2\u9ed1\u6811\u662f\u4e3a\u4e86\u89e3\u51b3\u4e8c\u53c9\u67e5\u627e\u6811\u7684\u7f3a\u9677\uff0c\u4e8c\u53c9\u67e5\u627e\u6811\u5728\u7279\u6b8a\u60c5\u51b5\u4e0b\u4f1a\u53d8\u6210\u4e00\u6761\u7ebf\u6027\u7ed3\u6784\uff08\u8fd9\u5c31\u8ddf\u539f\u6765\u4f7f\u7528\u94fe\u8868\u7ed3\u6784\u4e00\u6837\u4e86\uff0c\u9020\u6210\u5f88\u6df1\u7684\u95ee\u9898\uff09\uff0c\u904d\u5386\u67e5\u627e\u4f1a\u975e\u5e38\u6162\u3002\u800c\u7ea2\u9ed1\u6811\u5728\u63d2\u5165\u65b0\u6570\u636e\u540e\u53ef\u80fd\u9700\u8981\u901a\u8fc7\u5de6\u65cb\uff0c\u53f3\u65cb\u3001\u53d8\u8272\u8fd9\u4e9b\u64cd\u4f5c\u6765\u4fdd\u6301\u5e73\u8861\uff0c\u5f15\u5165\u7ea2\u9ed1\u6811\u5c31\u662f\u4e3a\u4e86\u67e5\u627e\u6570\u636e\u5feb\uff0c\u89e3\u51b3\u94fe\u8868\u67e5\u8be2\u6df1\u5ea6\u7684\u95ee\u9898\uff0c\u6211\u4eec\u77e5\u9053\u7ea2\u9ed1\u6811\u5c5e\u4e8e\u5e73\u8861\u4e8c\u53c9\u6811\uff0c\u4f46\u662f\u4e3a\u4e86\u4fdd\u6301\u201c\u5e73\u8861\u201d\u662f\u9700\u8981\u4ed8\u51fa\u4ee3\u4ef7\u7684\uff0c\u4f46\u662f\u8be5\u4ee3\u4ef7\u6240\u635f\u8017\u7684\u8d44\u6e90\u8981\u6bd4\u904d\u5386\u7ebf\u6027\u94fe\u8868\u8981\u5c11\uff0c\u6240\u4ee5\u5f53\u957f\u5ea6\u5927\u4e8e 8 \u7684\u65f6\u5019\uff0c\u4f1a\u4f7f\u7528\u7ea2\u9ed1\u6811\uff0c\u5982\u679c\u94fe\u8868\u957f\u5ea6\u5f88\u77ed\u7684\u8bdd\uff0c\u6839\u672c\u4e0d\u9700\u8981\u5f15\u5165\u7ea2\u9ed1\u6811\uff0c\u5f15\u5165\u53cd\u800c\u4f1a\u6162\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">17\u3001\u8bf4\u8bf4\u4f60\u5bf9\u7ea2\u9ed1\u6811\u7684\u4e86\u89e3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ea2\u9ed1\u6811\u662f\u4e00\u79cd\u81ea\u5e73\u8861\u7684\u4e8c\u53c9\u67e5\u627e\u6811\uff0c\u662f\u4e00\u79cd\u9ad8\u6548\u7684\u67e5\u627e\u6811\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ea2\u9ed1\u6811\u901a\u8fc7\u5982\u4e0b\u7684\u6027\u8d28\u5b9a\u4e49\u5b9e\u73b0\u81ea\u5e73\u8861\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n\u8282\u70b9\u662f\u7ea2\u8272\u6216\u9ed1\u8272\u3002\n<\/li><li>\n\u6839\u662f\u9ed1\u8272\u3002\n<\/li><li>\n\u6240\u6709\u53f6\u5b50\u90fd\u662f\u9ed1\u8272\uff08\u53f6\u5b50\u662f NIL \u8282\u70b9\uff09\u3002\n<\/li><li>\n\u6bcf\u4e2a\u7ea2\u8272\u8282\u70b9\u5fc5\u987b\u6709\u4e24\u4e2a\u9ed1\u8272\u7684\u5b50\u8282\u70b9\u3002\uff08\u4ece\u6bcf\u4e2a\u53f6\u5b50\u5230\u6839\u7684\u6240\u6709\u8def\u5f84\u4e0a\u4e0d\u80fd\u6709\u4e24\u4e2a\u8fde\u7eed\u7684\u7ea2\u8272\u8282\u70b9\u3002\uff09\n<\/li><li>\n\u4ece\u4efb\u4e00\u8282\u70b9\u5230\u5176\u6bcf\u4e2a\u53f6\u5b50\u7684\u6240\u6709\u7b80\u5355\u8def\u5f84\u90fd\u5305\u542b\u76f8\u540c\u6570\u76ee\u7684\u9ed1\u8272\u8282\u70b9\uff08\u7b80\u79f0\u9ed1\u9ad8\uff09\u3002\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">18\u3001JDK8 \u4e2d\u5bf9 HashMap \u505a\u4e86\u54ea\u4e9b\u6539\u53d8\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">1.\u5728 java 1.8 \u4e2d\uff0c\u5982\u679c\u94fe\u8868\u7684\u957f\u5ea6\u8d85\u8fc7\u4e86 8\uff0c\u90a3\u4e48\u94fe\u8868\u5c06\u8f6c\u6362\u4e3a\u7ea2\u9ed1\u6811\u3002\uff08\u6876\u7684\u6570\u91cf\u5fc5\u987b\u5927\u4e8e 64\uff0c\u5c0f\u4e8e 64 \u7684\u65f6\u5019\u53ea\u4f1a\u6269\u5bb9\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2.\u53d1\u751f hash \u78b0\u649e\u65f6\uff0cjava 1.7 \u4f1a\u5728\u94fe\u8868\u7684\u5934\u90e8\u63d2\u5165\uff0c\u800c java 1.8 \u4f1a\u5728\u94fe\u8868\u7684\u5c3e\u90e8\u63d2\u5165<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3.\u5728 java 1.8 \u4e2d\uff0cEntry \u88ab Node \u66ff\u4ee3(\u6362\u4e86\u4e00\u4e2a\u9a6c\u7532)\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">19\u3001HashMap \u4e2d\u7684 key \u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4efb\u4f55\u7c7b\u4f5c\u4e3a key \u5417\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e73\u65f6\u53ef\u80fd\u5927\u5bb6\u4f7f\u7528\u7684\u6700\u591a\u7684\u5c31\u662f\u4f7f\u7528 String \u4f5c\u4e3a HashMap \u7684 key\uff0c\u4f46\u662f\u73b0\u5728\u6211\u4eec\u60f3\u4f7f\u7528\u67d0\u4e2a\u81ea\u5b9a \u4e49\u7c7b\u4f5c\u4e3a HashMap \u7684 key\uff0c\u90a3\u5c31\u9700\u8981\u6ce8\u610f\u4ee5\u4e0b\u51e0\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n\u5982\u679c\u7c7b\u91cd\u5199\u4e86 equals \u65b9\u6cd5\uff0c\u5b83\u4e5f\u5e94\u8be5\u91cd\u5199 hashCode \u65b9\u6cd5\u3002\n<\/li><li>\n\u7c7b\u7684\u6240\u6709\u5b9e\u4f8b\u9700\u8981\u9075\u5faa\u4e0e equals \u548c hashCode \u76f8\u5173\u7684\u89c4\u5219\u3002\n<\/li><li>\n\u5982\u679c\u4e00\u4e2a\u7c7b\u6ca1\u6709\u4f7f\u7528 equals\uff0c\u4f60\u4e0d\u5e94\u8be5\u5728 hashCode \u4e2d\u4f7f\u7528\u5b83\u3002\n<\/li><li>\n\u54b1\u4eec\u81ea\u5b9a\u4e49 key \u7c7b\u7684\u6700\u4f73\u5b9e\u8df5\u662f\u4f7f\u4e4b\u4e3a\u4e0d\u53ef\u53d8\u7684\uff0c\u8fd9\u6837\uff0chashCode \u503c\u53ef\u4ee5\u88ab\u7f13\u5b58\u8d77\u6765\uff0c\u62e5\u6709\u66f4\u597d\u7684\u6027\u80fd\u3002\u4e0d\u53ef\u53d8\u7684\u7c7b\u4e5f\u53ef\u4ee5\u786e\u4fdd hashCode \u548c equals \u5728\u672a\u6765\u4e0d\u4f1a\u6539\u53d8\uff0c\u8fd9\u6837\u5c31\u4f1a\u89e3\u51b3\u4e0e\u53ef\u53d8\u76f8\u5173\u7684\u95ee\u9898\u4e86\u3002\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">20\u3001HashMap \u7684\u957f\u5ea6\u4e3a\u4ec0\u4e48\u662f 2 \u7684 N \u6b21\u65b9\u5462\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u80fd\u8ba9 HashMap \u5b58\u6570\u636e\u548c\u53d6\u6570\u636e\u7684\u6548\u7387\u9ad8\uff0c\u5c3d\u53ef\u80fd\u5730\u51cf\u5c11 hash \u503c\u7684\u78b0\u649e\uff0c\u4e5f\u5c31\u662f\u8bf4\u5c3d\u91cf\u628a\u6570 \u636e\u80fd\u5747\u5300\u7684\u5206\u914d\uff0c\u6bcf\u4e2a\u94fe\u8868\u6216\u8005\u7ea2\u9ed1\u6811\u957f\u5ea6\u5c3d\u91cf\u76f8\u7b49\u3002\u6211\u4eec\u9996\u5148\u53ef\u80fd\u4f1a\u60f3\u5230 % \u53d6\u6a21\u7684\u64cd\u4f5c\u6765\u5b9e\u73b0\u3002\u4e0b\u9762\u662f\u56de\u7b54\u7684\u91cd\u70b9\u54df\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\u53d6\u4f59\uff08%\uff09\u64cd\u4f5c\u4e2d\u5982\u679c\u9664\u6570\u662f 2 \u7684\u5e42\u6b21\uff0c\u5219\u7b49\u4ef7\u4e8e\u4e0e\u5176\u9664\u6570\u51cf\u4e00\u7684\u4e0e\uff08&amp;\uff09\u64cd\u4f5c\uff08\u4e5f\u5c31\u662f\u8bf4 hash % length == hash &amp;(length &#8211; 1) \u7684\u524d\u63d0\u662f length \u662f 2 \u7684 n \u6b21\u65b9\uff09\u3002\u5e76\u4e14\uff0c\u91c7\u7528\u4e8c\u8fdb \u5236\u4f4d\u64cd\u4f5c &amp; \uff0c\u76f8\u5bf9\u4e8e % \u80fd\u591f\u63d0\u9ad8\u8fd0\u7b97\u6548\u7387\u3002<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48 HashMap \u7684\u957f\u5ea6\u9700\u8981 2 \u7684 N \u6b21\u65b9\u4e86\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">21\u3001HashMap\uff0cLinkedHashMap \u6709\u4ec0\u4e48\u533a\u522b\uff1f<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\nLinkedHashMap \u662f\u7ee7\u627f\u4e8e HashMap\uff0c\u662f\u57fa\u4e8e HashMap \u548c\u53cc\u5411\u94fe\u8868\u6765\u5b9e\u73b0\u7684\u3002\n<\/li><li>\nHashMap \u65e0\u5e8f\uff1bLinkedHashMap \u6709\u5e8f\uff0c\u53ef\u5206\u4e3a\u63d2\u5165\u987a\u5e8f\u548c\u8bbf\u95ee\u987a\u5e8f\u4e24\u79cd\u3002\u5982\u679c\u662f\u8bbf\u95ee\u987a\u5e8f\uff0c\u90a3 put \u548c get \u64cd\u4f5c\u5df2\u5b58\u5728\u7684 Entry \u65f6\uff0c\u90fd\u4f1a\u628a Entry \u79fb\u52a8\u5230\u53cc\u5411\u94fe\u8868\u7684\u8868\u5c3e(\u5176\u5b9e\u662f\u5148\u5220\u9664\u518d\u63d2\u5165)\u3002\n<\/li><li>\nLinkedHashMap \u5b58\u53d6\u6570\u636e\uff0c\u8fd8\u662f\u8ddf HashMap \u4e00\u6837\u4f7f\u7528\u7684 Entry[] \u7684\u65b9\u5f0f\uff0c\u53cc\u5411\u94fe\u8868\u53ea\u662f\u4e3a\u4e86\u4fdd\u8bc1\u987a\u5e8f\u3002\n<\/li><li>\nLinkedHashMap \u662f\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684\u3002\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">22\u3001\u8bf4\u8bf4\u4ec0\u4e48\u662f fail-fast\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">fail-fast \u673a\u5236\u662f Java \u96c6\u5408\uff08Collection\uff09\u4e2d\u7684\u4e00\u79cd\u9519\u8bef\u673a\u5236\u3002\u5f53\u591a\u4e2a\u7ebf\u7a0b\u5bf9\u540c\u4e00\u4e2a\u96c6\u5408\u7684\u5185\u5bb9\u8fdb\u884c \u64cd\u4f5c\u65f6\uff0c\u5c31\u53ef\u80fd\u4f1a\u4ea7\u751f fail-fast \u4e8b\u4ef6\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a\u5f53\u67d0\u4e00\u4e2a\u7ebf\u7a0b A \u901a\u8fc7 iterator \u53bb\u904d\u5386\u67d0\u96c6\u5408\u7684\u8fc7\u7a0b\u4e2d\uff0c\u82e5\u8be5\u96c6\u5408\u7684\u5185\u5bb9\u88ab\u5176\u4ed6\u7ebf\u7a0b\u6240\u6539\u53d8 \u4e86\uff0c\u90a3\u4e48\u7ebf\u7a0b A \u8bbf\u95ee\u96c6\u5408\u65f6\uff0c\u5c31\u4f1a\u629b\u51fa ConcurrentModificationException \u5f02\u5e38\uff0c\u4ea7\u751f fail-fast \u4e8b \u4ef6\u3002\u8fd9\u91cc\u7684\u64cd\u4f5c\u4e3b\u8981\u662f\u6307 add\u3001remove \u548c clear\uff0c\u5bf9\u96c6\u5408\u5143\u7d20\u4e2a\u6570\u8fdb\u884c\u4fee\u6539\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u89e3\u51b3\u529e\u6cd5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u8bae\u4f7f\u7528\u201cjava.util.concurrent \u5305\u4e0b\u7684\u7c7b\u201d\u53bb\u53d6\u4ee3\u201cjava.util \u5305\u4e0b\u7684\u7c7b\u201d\u3002\u53ef\u4ee5\u8fd9\u4e48\u7406\u89e3\uff1a\u5728\u904d\u5386\u4e4b\u524d\uff0c\u628a modCount \u8bb0\u4e0b\u6765 expectModCount\uff0c\u540e\u9762 expectModCount \u53bb \u548c modCount \u8fdb\u884c\u6bd4\u8f83\uff0c\u5982\u679c\u4e0d\u76f8\u7b49\u4e86\uff0c\u8bc1\u660e\u5df2\u5e76\u53d1\u4e86\uff0c\u88ab\u4fee\u6539\u4e86\uff0c\u4e8e\u662f\u629b\u51fa ConcurrentModificationException \u5f02\u5e38\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">23\u3001HashMap \u548c HashTable \u6709\u4ec0\u4e48\u533a\u522b\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460\u3001HashMap \u662f\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684\uff0cHashTable \u662f\u7ebf\u7a0b\u5b89\u5168\u7684\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461\u3001\u7531\u4e8e\u7ebf\u7a0b\u5b89\u5168\uff0c\u6240\u4ee5 HashTable \u7684\u6548\u7387\u6bd4\u4e0d\u4e0a HashMap\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462\u3001HashMap\u6700\u591a\u53ea\u5141\u8bb8\u4e00\u6761\u8bb0\u5f55\u7684\u952e\u4e3anull\uff0c\u5141\u8bb8\u591a\u6761\u8bb0\u5f55\u7684\u503c\u4e3anull\uff0c\u800c HashTable\u4e0d\u5141\u8bb8\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2463\u3001HashMap \u9ed8\u8ba4\u521d\u59cb\u5316\u6570\u7ec4\u7684\u5927\u5c0f\u4e3a16\uff0cHashTable \u4e3a 11\uff0c\u524d\u8005\u6269\u5bb9\u65f6\uff0c\u6269\u5927\u4e24\u500d\uff0c\u540e\u8005\u6269\u5927\u4e24\u500d+1\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2464\u3001HashMap \u9700\u8981\u91cd\u65b0\u8ba1\u7b97 hash \u503c\uff0c\u800c HashTable \u76f4\u63a5\u4f7f\u7528\u5bf9\u8c61\u7684 hashCode\uff1b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">24\u3001HashMap \u662f\u7ebf\u7a0b\u5b89\u5168\u7684\u5417\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u662f\uff0c\u5728\u591a\u7ebf\u7a0b\u73af\u5883\u4e0b\uff0c1.7 \u4f1a\u4ea7\u751f\u6b7b\u5faa\u73af\u3001\u6570\u636e\u4e22\u5931\u3001\u6570\u636e\u8986\u76d6\u7684\u95ee\u9898\uff0c1.8 \u4e2d\u4f1a\u6709\u6570\u636e\u8986\u76d6\u7684\u95ee\u9898\uff0c\u4ee5 1.8 \u4e3a\u4f8b\uff0c\u5f53 A \u7ebf\u7a0b\u5224\u65ad index \u4f4d\u7f6e\u4e3a\u7a7a\u540e\u6b63\u597d\u6302\u8d77\uff0cB \u7ebf\u7a0b\u5f00\u59cb\u5f80 index \u4f4d\u7f6e\u7684\u5199\u5165\u8282\u70b9\u6570\u636e\uff0c\u8fd9\u65f6 A \u7ebf\u7a0b\u6062\u590d\u73b0\u573a\uff0c\u6267\u884c\u8d4b\u503c\u64cd\u4f5c\uff0c\u5c31\u628a A \u7ebf\u7a0b\u7684\u6570\u636e\u7ed9\u8986\u76d6\u4e86\uff1b\u8fd8\u6709 ++size \u8fd9\u4e2a\u5730\u65b9\u4e5f\u4f1a\u9020\u6210\u591a\u7ebf\u7a0b\u540c\u65f6\u6269\u5bb9\u7b49\u95ee\u9898\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">25\u3001\u5982\u4f55\u89c4\u907f HashMap \u7684\u7ebf\u7a0b\u4e0d\u5b89\u5168\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5355\u7ebf\u7a0b\u6761\u4ef6\u4e0b\uff0c\u4e3a\u907f\u514d\u51fa\u73b0 ConcurrentModificationException\uff0c\u9700\u8981\u4fdd\u8bc1\u53ea\u901a\u8fc7 HashMap \u672c\u8eab\u6216\u8005\u53ea\u901a\u8fc7 Iterator \u53bb\u4fee\u6539\u6570\u636e\uff0c\u4e0d\u80fd\u5728 Iterator \u4f7f\u7528\u7ed3\u675f\u4e4b\u524d\u4f7f\u7528 HashMap \u672c\u8eab\u7684\u65b9\u6cd5\u4fee\u6539\u6570\u636e\u3002\u56e0\u4e3a\u901a\u8fc7 Iterator \u5220\u9664\u6570\u636e\u65f6\uff0cHashMap \u7684 modCount \u548c Iterator \u7684 expectedModCount \u90fd\u4f1a\u81ea\u589e\uff0c\u4e0d\u5f71\u54cd\u4e8c\u8005\u7684\u76f8\u7b49\u6027\u3002\u5982\u679c\u662f\u589e\u52a0\u6570\u636e\uff0c\u53ea\u80fd\u901a\u8fc7 HashMap \u672c\u8eab\u7684\u65b9\u6cd5\u5b8c\u6210\uff0c\u6b64\u65f6\u5982\u679c\u8981\u7ee7\u7eed\u904d\u5386\u6570\u636e\uff0c\u9700\u8981\u91cd\u65b0\u8c03\u7528 iterator() \u65b9\u6cd5\u4ece\u800c\u91cd\u65b0\u6784\u9020\u51fa\u4e00\u4e2a\u65b0\u7684Iterator\uff0c\u4f7f\u5f97\u65b0 Iterator \u7684 expectedModCount \u4e0e\u66f4\u65b0\u540e\u7684 HashMap \u7684 modCount \u76f8\u7b49\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u7ebf\u7a0b\u6761\u4ef6\u4e0b\uff0c\u53ef\u4f7f\u7528\u4e24\u79cd\u65b9\u5f0f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\nCollections.synchronizedMap \u65b9\u6cd5\u6784\u9020\u51fa\u4e00\u4e2a\u540c\u6b65 Map\n<\/li><li>\n\u76f4\u63a5\u4f7f\u7528\u7ebf\u7a0b\u5b89\u5168\u7684 ConcurrentHashMap\u3002\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">26\u3001HashMap \u548c ConcurrentHashMap \u7684\u533a\u522b\uff1f<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li>\n\u90fd\u662f key-value \u5f62\u5f0f\u7684\u5b58\u50a8\u6570\u636e\uff1b\n<\/li><li>\nHashMap \u662f\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684\uff0cConcurrentHashMap \u662f JUC \u4e0b\u7684\u7ebf\u7a0b\u5b89\u5168\u7684\uff1b\n<\/li><li>\nHashMap \u5e95\u5c42\u6570\u636e\u7ed3\u6784\u662f\u6570\u7ec4 + \u94fe\u8868\uff08JDK 1.8 \u4e4b\u524d\uff09\u3002JDK 1.8 \u4e4b\u540e\u662f\u6570\u7ec4 + \u94fe\u8868 + \u7ea2\u9ed1 \u6811\u3002\u5f53\u94fe\u8868\u4e2d\u5143\u7d20\u4e2a\u6570\u8fbe\u5230 8 \u4e14\u6570\u7ec4\u957f\u5ea6\u5927\u4e8e\u7b49\u4e8e 64 \u7684\u65f6\u5019\uff0c\u94fe\u8868\u7684\u67e5\u8be2\u901f\u5ea6\u4e0d\u5982\u7ea2\u9ed1\u6811\u5feb\uff0c\u94fe\u8868\u4f1a\u8f6c\u4e3a\u7ea2\u9ed1\u6811\uff0c\u7ea2 \u9ed1\u6811\u67e5\u8be2\u901f\u5ea6\u5feb\uff1b\n<\/li><li>\nHashMap \u521d\u59cb\u6570\u7ec4\u5927\u5c0f\u4e3a 16\uff08\u9ed8\u8ba4\uff09\uff0c\u5f53\u51fa\u73b0\u6269\u5bb9\u7684\u65f6\u5019\uff0c\u4ee5 0.75 * \u6570\u7ec4\u5927\u5c0f\u7684\u65b9\u5f0f\u8fdb\u884c\u6269 \u5bb9\uff1b\n<\/li><li>\nConcurrentHashMap \u5728 JDK 1.8 \u4e4b\u524d\u662f\u91c7\u7528\u5206\u6bb5\u9501\u6765\u73b0\u5b9e\u7684 Segment + HashEntry\uff0c Segment \u6570\u7ec4\u5927\u5c0f\u9ed8\u8ba4\u662f 16\uff0c2 \u7684 n \u6b21\u65b9\uff1bJDK 1.8 \u4e4b\u540e\uff0c\u91c7\u7528 Node + CAS + Synchronized \u6765\u4fdd\u8bc1\u5e76\u53d1\u5b89\u5168\u8fdb\u884c\u5b9e\u73b0\u3002\n<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">27\u3001\u4e3a\u4ec0\u4e48 ConcurrentHashMap \u6bd4 HashTable \u6548\u7387\u8981\u9ad8\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">HashTable\uff1a\u4f7f\u7528\u4e00\u628a\u9501\uff08\u9501\u4f4f\u6574\u4e2a\u94fe\u8868\u7ed3\u6784\uff09\u5904\u7406\u5e76\u53d1\u95ee\u9898\uff0c\u591a\u4e2a\u7ebf\u7a0b\u7ade\u4e89\u4e00\u628a\u9501\uff0c\u5bb9\u6613\u963b\u585e\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ConcurrentHashMap\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\nJDK 1.7 \u4e2d\u4f7f\u7528\u5206\u6bb5\u9501\uff08<code>ReentrantLock + Segment + HashEntry<\/code>\uff09\uff0c\u76f8\u5f53\u4e8e\u628a\u4e00\u4e2a HashMap \u5206\u6210\u591a\u4e2a\u6bb5\uff0c\u6bcf\u6bb5\u5206\u914d\u4e00\u628a\u9501\uff0c\u8fd9\u6837\u652f\u6301\u591a\u7ebf\u7a0b\u8bbf\u95ee\u3002\u9501\u7c92\u5ea6\uff1a\u57fa\u4e8e Segment\uff0c\u5305\u542b\u591a\u4e2a HashEntry\u3002\n<\/li><li>\nJDK 1.8 \u4e2d\u4f7f\u7528<code>CAS + synchronized + Node + \u7ea2\u9ed1\u6811<\/code>\u3002\u9501\u7c92\u5ea6\uff1aNode\uff08\u9996\u7ed3\u70b9\uff09\uff08\u5b9e\u73b0 Map.Entry&lt;K,V&gt;\uff09\u3002\u9501\u7c92\u5ea6\u964d\u4f4e\u4e86\u3002\n<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">28\u3001\u8bf4\u8bf4 ConcurrentHashMap \u4e2d\u7684\u9501\u673a\u5236<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JDK 1.7 \u4e2d\uff0c\u91c7\u7528\u5206\u6bb5\u9501\u7684\u673a\u5236\uff0c\u5b9e\u73b0\u5e76\u53d1\u7684\u66f4\u65b0\u64cd\u4f5c\uff0c\u5e95\u5c42\u91c7\u7528\u6570\u7ec4+\u94fe\u8868\u7684\u5b58\u50a8\u7ed3\u6784\uff0c\u5305\u62ec\u4e24\u4e2a\u6838\u5fc3\u9759\u6001\u5185\u90e8\u7c7b Segment \u548c HashEntry\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460\u3001Segment \u7ee7\u627f ReentrantLock\uff08\u91cd\u5165\u9501\uff09 \u7528\u6765\u5145\u5f53\u9501\u7684\u89d2\u8272\uff0c\u6bcf\u4e2a Segment \u5bf9\u8c61\u5b88\u62a4\u6bcf\u4e2a\u6563\u5217\u6620\u5c04\u8868\u7684\u82e5\u5e72\u4e2a\u6876\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461\u3001HashEntry \u7528\u6765\u5c01\u88c5\u6620\u5c04\u8868\u7684\u952e-\u503c\u5bf9\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462\u3001\u6bcf\u4e2a\u6876\u662f\u7531\u82e5\u5e72\u4e2a HashEntry \u5bf9\u8c61\u94fe\u63a5\u8d77\u6765\u7684\u94fe\u8868<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm5.png\" alt=\"\u56fe\u7247\" \/><figcaption>JDK 1.7 \u4e2d ConcurrentHashMap \u7684\u9501<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">JDK 1.8 \u4e2d\uff0c\u91c7\u7528 Node + CAS + Synchronized \u6765\u4fdd\u8bc1\u5e76\u53d1\u5b89\u5168\u3002\u53d6\u6d88\u7c7b Segment\uff0c\u76f4\u63a5\u7528 table \u6570\u7ec4\u5b58\u50a8\u952e\u503c\u5bf9\uff1b\u5f53 HashEntry \u5bf9\u8c61\u7ec4\u6210\u7684\u94fe\u8868\u957f\u5ea6\u8d85\u8fc7 TREEIFY_THRESHOLD \u65f6\uff0c\u94fe\u8868\u8f6c\u6362\u4e3a\u7ea2\u9ed1\u6811\uff0c\u63d0\u5347\u6027\u80fd\u3002\u5e95\u5c42\u53d8\u66f4\u4e3a\u6570\u7ec4 + \u94fe\u8868 + \u7ea2\u9ed1\u6811\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm6.png\" alt=\"\u56fe\u7247\" \/><figcaption>JDK 1.8 \u4e2d\uff0c\u91c7\u7528 Node + CAS + Synchronized \u6765\u4fdd\u8bc1\u5e76\u53d1\u5b89\u5168<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">29\u3001\u5728 JDK 1.8 \u4e2d\uff0cConcurrentHashMap \u4e3a\u4ec0\u4e48\u8981\u4f7f\u7528\u5185\u7f6e\u9501 synchronized \u6765\u4ee3\u66ff\u91cd\u5165\u9501 ReentrantLock\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460\u3001\u7c92\u5ea6\u964d\u4f4e\u4e86\uff1b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461\u3001JVM \u5f00\u53d1\u56e2\u961f\u6ca1\u6709\u653e\u5f03 synchronized\uff0c\u800c\u4e14\u57fa\u4e8e JVM \u7684 synchronized \u4f18\u5316\u7a7a\u95f4\u66f4\u5927\uff0c\u66f4\u52a0\u81ea\u7136\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462\u3001\u5728\u5927\u91cf\u7684\u6570\u636e\u64cd\u4f5c\u4e0b\uff0c\u5bf9\u4e8e JVM \u7684\u5185\u5b58\u538b\u529b\uff0c\u57fa\u4e8e API \u7684 ReentrantLock \u4f1a\u5f00\u9500\u66f4\u591a\u7684\u5185\u5b58\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">30\u3001\u80fd\u5bf9 ConcurrentHashMap \u505a\u4e2a\u7b80\u5355\u4ecb\u7ecd\u5417\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u2460\u3001\u91cd\u8981\u7684\u5e38\u91cf\uff1a\u3000\u3000<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private transient volatile int sizeCtl; <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u4e3a\u8d1f\u6570\u65f6\uff0c-1 \u8868\u793a\u6b63\u5728\u521d\u59cb\u5316\uff0c-N \u8868\u793a N &#8211; 1 \u4e2a\u7ebf\u7a0b\u6b63\u5728\u8fdb\u884c\u6269\u5bb9\uff1b\u3000\u3000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u4e3a 0 \u65f6\uff0c\u8868\u793a table \u8fd8\u6ca1\u6709\u521d\u59cb\u5316\uff1b\u3000\u3000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u4e3a\u5176\u4ed6\u6b63\u6570\u65f6\uff0c\u8868\u793a\u521d\u59cb\u5316\u6216\u8005\u4e0b\u4e00\u6b21\u8fdb\u884c\u6269\u5bb9\u7684\u5927\u5c0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2461\u3001\u6570\u636e\u7ed3\u6784\uff1a\u3000\u3000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Node \u662f\u5b58\u50a8\u7ed3\u6784\u7684\u57fa\u672c\u5355\u5143\uff0c\u7ee7\u627f HashMap \u4e2d\u7684 Entry\uff0c\u7528\u4e8e\u5b58\u50a8\u6570\u636e\uff1b&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TreeNode \u7ee7\u627f Node\uff0c\u4f46\u662f\u6570\u636e\u7ed3\u6784\u6362\u6210\u4e86\u4e8c\u53c9\u6811\u7ed3\u6784\uff0c\u662f\u7ea2\u9ed1\u6811\u7684\u5b58\u50a8\u7ed3\u6784\uff0c\u7528\u4e8e\u7ea2\u9ed1\u6811\u4e2d\u5b58\u50a8\u6570\u636e\uff1b\u3000\u3000<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">TreeBin \u662f\u5c01\u88c5 TreeNode \u7684\u5bb9\u5668\uff0c\u63d0\u4f9b\u8f6c\u6362\u7ea2\u9ed1\u6811\u7684\u4e00\u4e9b\u6761\u4ef6\u548c\u9501\u7684\u63a7\u5236\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2462\u3001\u5b58\u50a8\u5bf9\u8c61\u65f6\uff08put() \u65b9\u6cd5\uff09\uff1a\u3000\u3000<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\n\u5982\u679c\u6ca1\u6709\u521d\u59cb\u5316\uff0c\u5c31\u8c03\u7528 initTable() \u65b9\u6cd5\u6765\u8fdb\u884c\u521d\u59cb\u5316\uff1b\u3000\u3000\n<\/li><li>\n\u5982\u679c\u6ca1\u6709 hash \u51b2\u7a81\u5c31\u76f4\u63a5 CAS \u65e0\u9501\u63d2\u5165\uff1b\u3000\u3000\n<\/li><li>\n\u5982\u679c\u9700\u8981\u6269\u5bb9\uff0c\u5c31\u5148\u8fdb\u884c\u6269\u5bb9\uff1b\u3000\u3000\n<\/li><li>\n\u5982\u679c\u5b58\u5728 hash \u51b2\u7a81\uff0c\u5c31\u52a0\u9501\u6765\u4fdd\u8bc1\u7ebf\u7a0b\u5b89\u5168\uff0c\u4e24\u79cd\u60c5\u51b5\uff1a\u4e00\u79cd\u662f\u94fe\u8868\u5f62\u5f0f\u5c31\u76f4\u63a5\u904d\u5386\u5230\u5c3e\u7aef\u63d2\u5165\uff0c\u4e00\u79cd\u662f\u7ea2\u9ed1\u6811\u5c31\u6309\u7167\u7ea2\u9ed1\u6811\u7ed3\u6784\u63d2\u5165\uff1b\u3000\u3000\n<\/li><li>\n\u5982\u679c\u8be5\u94fe\u8868\u7684\u6570\u91cf\u5927\u4e8e\u9600\u503c 8\uff0c\u5c31\u8981\u5148\u8f6c\u6362\u6210\u7ea2\u9ed1\u6811\u7684\u7ed3\u6784\uff0cbreak \u518d\u4e00\u6b21\u8fdb\u5165\u5faa\u73af \u3000\u3000\n<\/li><li>\n\u5982\u679c\u6dfb\u52a0\u6210\u529f\u5c31\u8c03\u7528 addCount() \u65b9\u6cd5\u7edf\u8ba1 size\uff0c\u5e76\u4e14\u68c0\u67e5\u662f\u5426\u9700\u8981\u6269\u5bb9\u3002\n<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2463\u3001\u6269\u5bb9\u65b9\u6cd5 transfer()\uff1a\u9ed8\u8ba4\u5bb9\u91cf\u4e3a 16\uff0c\u6269\u5bb9\u65f6\uff0c\u5bb9\u91cf\u53d8\u4e3a\u539f\u6765\u7684\u4e24\u500d\u3002\u3000\u3000helpTransfer()\uff1a\u8c03\u7528\u591a\u4e2a\u5de5\u4f5c\u7ebf\u7a0b\u4e00\u8d77\u5e2e\u52a9\u8fdb\u884c\u6269\u5bb9\uff0c\u8fd9\u6837\u7684\u6548\u7387\u5c31\u4f1a\u66f4\u9ad8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2464\u3001\u83b7\u53d6\u5bf9\u8c61\u65f6\uff08get()\u65b9\u6cd5\uff09\uff1a\u3000\u3000<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\n\u8ba1\u7b97 hash \u503c\uff0c\u5b9a\u4f4d\u5230\u8be5 table \u7d22\u5f15\u4f4d\u7f6e\uff0c\u5982\u679c\u662f\u9996\u7ed3\u70b9\u7b26\u5408\u5c31\u8fd4\u56de\uff1b\u3000\u3000\n<\/li><li>\n\u5982\u679c\u9047\u5230\u6269\u5bb9\u65f6\uff0c\u4f1a\u8c03\u7528\u6807\u8bb0\u6b63\u5728\u6269\u5bb9\u7ed3\u70b9 ForwardingNode.find()\u65b9\u6cd5\uff0c\u67e5\u627e\u8be5\u7ed3\u70b9\uff0c\u5339\u914d\u5c31\u8fd4\u56de\uff1b\u3000\u3000\n<\/li><li>\n\u4ee5\u4e0a\u90fd\u4e0d\u7b26\u5408\u7684\u8bdd\uff0c\u5c31\u5f80\u4e0b\u904d\u5386\u7ed3\u70b9\uff0c\u5339\u914d\u5c31\u8fd4\u56de\uff0c\u5426\u5219\u6700\u540e\u5c31\u8fd4\u56de null\u3002\n<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">31\u3001\u719f\u6089 ConcurrentHashMap \u7684\u5e76\u53d1\u5ea6\u5417\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u7a0b\u5e8f\u8fd0\u884c\u65f6\u80fd\u591f\u540c\u65f6\u66f4\u65b0 ConccurentHashMap \u4e14\u4e0d\u4ea7\u751f\u9501\u7ade\u4e89\u7684\u6700\u5927\u7ebf\u7a0b\u6570\u3002\u9ed8\u8ba4\u4e3a 16\uff0c\u4e14\u53ef\u4ee5\u5728\u6784\u9020\u51fd\u6570\u4e2d\u8bbe\u7f6e\u3002\u5f53\u7528\u6237\u8bbe\u7f6e\u5e76\u53d1\u5ea6\u65f6\uff0cConcurrentHashMap \u4f1a\u4f7f\u7528\u5927\u4e8e\u7b49\u4e8e\u8be5\u503c\u7684\u6700\u5c0f 2 \u5e42\u6307\u6570\u4f5c\u4e3a\u5b9e\u9645\u5e76\u53d1\u5ea6\uff08\u5047\u5982\u7528\u6237\u8bbe\u7f6e\u5e76\u53d1\u5ea6\u4e3a 17\uff0c\u5b9e\u9645\u5e76\u53d1\u5ea6\u5219\u4e3a 32\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u603b\u7ed3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u597d\u4e86\uff0c\u5c31\u5199\u8fd9\u4e48\u591a\u4e86\uff0c\u6587\u7ae0\u4e2d\u5f88\u591a\u5df2\u7ecf\u4e0d\u662f HashMap \u77e5\u8bc6\u70b9\u4e86\uff0c\u4f46\uff0c\u9762\u8bd5\u5f88\u6709\u53ef\u80fd\u4f1a\u95ee\u8fd9\u4e9b\u77e5\u8bc6\u70b9\uff0c\u591a\u51c6\u5907\u70b9\u4e5f\u7b97\u662f\u6709\u5907\u65e0\u60a3\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.jsdelivr.net\/gh\/xmt1139057136\/xttblog\/2021\/05\/hm7.gif\" alt=\"\u56fe\u7247\" \/><figcaption>\u52a0\u6cb9\u5185\u5377<\/figcaption><\/figure><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\u6240\u8c13\u5929\u624d\uff0c\u53ea\u4e0d\u8fc7\u662f\u628a\u522b\u4eba\u559d\u5496\u5561\u7684\u529f\u592b\u90fd\u7528\u5728\u5de5\u4f5c\u4e0a\u4e86\u3002<\/p><p>\u2014\u2014\u9c81\u8fc5<\/p><\/blockquote>\n<!-- <audio autoplay=\"autoplay\" height=\"100\" width=\"100\" hidden=\"true\"><source src=\"https:\/\/c.coka.la\/orAvPR.mp3\" type=\"audio\/mp3\"\/><\/audio><img decoding=\"async\" src=\"https:\/\/images.weserv.nl\/?url=https:\/\/ws3.sinaimg.cn\/large\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/> --><p><!-- <img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/xmt1139057136\/xttblog\/master\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/>--><img decoding=\"async\" src=\"https:\/\/saas.51autoparts.cn\/api\/admin\/sys-file\/oss\/file?fileName=84db51f8561e448f9a4fda2eff0811f9.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/><\/p><p>\u6700\u540e\uff0c\u6b22\u8fce\u5173\u6ce8\u6211\u7684\u4e2a\u4eba\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a\u4e1a\u4f59\u8349\uff08yyucao\uff09\uff01<b>\u53ef\u52a0\u4f5c\u8005\u5fae\u4fe1\u53f7\uff1a<font color=\"red\">xttblog2<\/font>\u3002\u5907\u6ce8\uff1a\u201c1\u201d\uff0c\u6dfb\u52a0\u535a\u4e3b\u5fae\u4fe1\u62c9\u4f60\u8fdb\u5fae\u4fe1\u7fa4\u3002\u5907\u6ce8\u9519\u8bef\u4e0d\u4f1a\u540c\u610f\u597d\u53cb\u7533\u8bf7\u3002<\/b>\u518d\u6b21\u611f\u8c22\u60a8\u7684\u5173\u6ce8\uff01\u540e\u7eed\u6709\u7cbe\u5f69\u5185\u5bb9\u4f1a\u7b2c\u4e00\u65f6\u95f4\u53d1\u7ed9\u60a8\uff01\u539f\u521b\u6587\u7ae0\u6295\u7a3f\u8bf7\u53d1\u9001\u81f3532009913@qq.com\u90ae\u7bb1\u3002\u5546\u52a1\u5408\u4f5c\u4e5f\u53ef\u6dfb\u52a0\u4f5c\u8005\u5fae\u4fe1\u8fdb\u884c\u8054\u7cfb\uff01<\/p><p>\u672c\u6587\u539f\u6587\u51fa\u5904\uff1a<a href=\"https:\/\/www.xttblog.com\">\u4e1a\u4f59\u8349<\/a>\uff1a &raquo; <a href=\"https:\/\/www.xttblog.com\/?p=5214\">\u5206\u4eab\u4e00\u4e9b Java HashMap \u9ad8\u7ea7\u9762\u8bd5\u9898\uff01<\/a><\/p><!-- <div class=\"bd-reward-stl\"><button id=\"bdRewardBtn\"><span><\/span><\/button><\/div> -->","protected":false},"excerpt":{"rendered":"<p>\u4eca\u5e74\u4ee5\u6765\uff0c\u6211\u9762\u8bd5\u8fc7\u5f88\u591a\u5019\u9009\u4eba\u3002\u5176\u4e2d\u4e5f\u6709\u4e0d\u5c11\u4eba\u80cc\u8fc7\u9762\u8bd5\u9898\uff0c\u4f46\u662f\u7ecf\u8fc7\u6211\u7684\u8fd9\u5957\u9762\u8bd5\u9898\u5957\u9910\uff0c\u57fa\u672c\u4e0a\u6ca1\u5565\u4eba\u80fd\u901a\u8fc7\u3002 \u5728  [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[1164,1954,1161,1162,1163],"class_list":["post-5214","post","type-post","status-publish","format-standard","hentry","category-java","tag-concurrenthashmap","tag-currenthashmap","tag-hashmap","tag-hashtable","tag-linkedhashmap"],"_links":{"self":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5214"}],"version-history":[{"count":1,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5214\/revisions"}],"predecessor-version":[{"id":5215,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5214\/revisions\/5215"}],"wp:attachment":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}