{"rsdb":{"rid":"242471","subhead":"","postdate":"0","aid":"166947","fid":"54","uid":"1","topic":"1","content":"

HashMap\u4e2d\u7684\u6570\u636e\u7ed3\u6784\u662f\u6570\u7ec4<\/span>+\u5355\u94fe\u8868\u7684\u7ec4\u5408\uff0c\u4ee5\u952e\u503c\u5bf9(key-value)\u7684\u5f62\u5f0f\u5b58\u50a8\u5143\u7d20\u7684\uff0c\u901a\u8fc7<\/span>put()\u548cget()\u65b9\u6cd5\u50a8\u5b58\u548c\u83b7\u53d6\u5bf9\u8c61\u3002<\/p>

\"\"<\/p>

\uff08\u65b9\u5757\u8868\u793aEntry\u5bf9\u8c61\uff0c\u6a2a\u6392\u8868\u793a\u6570\u7ec4table[]\uff0c\u7eb5\u6392\u8868\u793a\u54c8\u5e0c\u6876bucket\u3010\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u7531Entry\u7ec4\u6210\u7684\u94fe\u8868\uff0c\u65b0\u52a0\u5165\u7684Entry\u653e\u5728\u94fe\u5934\uff0c\u6700\u5148\u52a0\u5165\u7684\u653e\u5728\u94fe\u5c3e\u3011\uff0c\uff09<\/p>

\u6e90\u7801\u5206\u6790\uff1a<\/p>

\u6e90\u7801\u5206\u6790\uff1a<\/p>

put()\u6e90\u7801\u5206\u6790\uff1a<\/p>

\u53ef\u4ee5\u770b\u5230\uff0c\u5f53\u6211\u4eec\u7ed9put()\u65b9\u6cd5\u4f20\u9012\u952e\u548c\u503c\u65f6\uff0cHashMap\u4f1a\u7531key\u6765\u8c03\u7528hash()\u65b9\u6cd5\uff0c\u8fd4\u56de\u952e\u7684hash\u503c\uff0c\u8ba1\u7b97Index\u540e\u7528\u4e8e\u627e\u5230bucket\uff08\u54c8\u5e0c\u6876\uff09\u7684\u4f4d\u7f6e\u6765\u50a8\u5b58Entry\u5bf9\u8c61\u3002<\/p>

\u5982\u679c\u4e24\u4e2a\u5bf9\u8c61key\u7684hash\u503c\u76f8\u540c\uff0c\u90a3\u4e48\u5b83\u4eec\u7684bucket\u4f4d\u7f6e\u4e5f\u76f8\u540c\uff0c\u4f46equals()\u4e0d\u76f8\u540c\uff0c\u6dfb\u52a0\u5143\u7d20\u65f6\u4f1a\u53d1\u751fhash\u78b0\u649e\uff0c\u4e5f\u53ebhash\u51b2\u7a81\uff0cHashMap\u4f7f\u7528\u94fe\u8868\u6765\u89e3\u51b3\u78b0\u649e\u95ee\u9898\u3002<\/p>

\u5206\u6790\u6e90\u7801\u53ef\u77e5\uff0cput()\u65f6\uff0cHashMap\u4f1a\u5148\u904d\u5386table\u6570\u7ec4\uff0c\u7528hash\u503c\u548cequals()\u5224\u65ad\u6570\u7ec4\u4e2d\u662f\u5426\u5b58\u5728\u5b8c\u5168\u76f8\u540c\u7684key\u5bf9\u8c61\uff0c \u5982\u679c\u8fd9\u4e2akey\u5bf9\u8c61\u5728table\u6570\u7ec4\u4e2d\u5df2\u7ecf\u5b58\u5728\uff0c\u5c31\u7528\u65b0\u7684value\u4ee3\u66ff\u8001\u7684value\u3002\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u5c31\u521b\u5efa\u4e00\u4e2a\u65b0\u7684Entry\u5bf9\u8c61\u6dfb\u52a0\u5230table[ i ]\u5904\u3002<\/p>

\u5982\u679c\u8be5table[ i ]\u5df2\u7ecf\u5b58\u5728\u5176\u4ed6\u5143\u7d20\uff0c\u90a3\u4e48\u65b0Entry\u5bf9\u8c61\u5c06\u4f1a\u50a8\u5b58\u5728bucket\u94fe\u8868\u7684\u8868\u5934\uff0c\u901a\u8fc7next\u6307\u5411\u539f\u6709\u7684Entry\u5bf9\u8c61\uff0c\u5f62\u6210\u94fe\u8868\u7ed3\u6784\uff08hash\u78b0\u649e\u89e3\u51b3\u65b9\u6848\uff09\u3002<\/p>

Entry\u6570\u636e\u7ed3\u6784\u6e90\u7801\u5982\u4e0b\uff08HashMap\u5185\u90e8\u7c7b\uff09\uff1a<\/p>

\u5f62\u6210\u5355\u94fe\u8868\u7684\u6838\u5fc3\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>

\uff08put\u65b9\u6cd5\u6267\u884c\u8fc7\u7a0b\uff09<\/p>

\u5982\u679c\u4e24\u4e2a\u4e0d\u540c\u7684key\u7684hashcode\u76f8\u540c\uff0c\u4e24\u4e2a\u503c\u5bf9\u8c61\u50a8\u5b58\u5728\u540c\u4e00\u4e2abucket\u4f4d\u7f6e\uff0c\u8981\u83b7\u53d6value\uff0c\u6211\u4eec\u8c03\u7528get()\u65b9\u6cd5\uff0cHashMap\u4f1a\u4f7f\u7528key\u7684hashcode\u627e\u5230bucket\u4f4d\u7f6e\uff0c\u56e0\u4e3aHashMap\u5728\u94fe\u8868\u4e2d\u5b58\u50a8\u7684\u662fEntry\u952e\u503c\u5bf9\uff0c\u6240\u4ee5\u627e\u5230bucket\u4f4d\u7f6e\u4e4b\u540e\uff0c\u4f1a\u8c03\u7528key\u7684equals()\u65b9\u6cd5\uff0c\u6309\u987a\u5e8f\u904d\u5386\u94fe\u8868\u7684\u6bcf\u4e2a Entry\uff0c\u76f4\u5230\u627e\u5230\u60f3\u83b7\u53d6\u7684 Entry \u4e3a\u6b62\u2014\u2014\u5982\u679c\u6070\u597d\u8981\u641c\u7d22\u7684 Entry \u4f4d\u4e8e\u8be5 Entry \u94fe\u7684\u6700\u672b\u7aef\uff08\u8be5 Entry \u662f\u6700\u65e9\u653e\u5165\u8be5 bucket \u4e2d\uff09\uff0c\u90a3HashMap\u5fc5\u987b\u5faa\u73af\u5230\u6700\u540e\u624d\u80fd\u627e\u5230\u8be5\u5143\u7d20\u3002<\/p>

get()\u65b9\u6cd5\u6e90\u7801\u5982\u4e0b\uff1a<\/p>

\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u5728HashMap\u4e2d\u8981\u627e\u5230\u67d0\u4e2a\u5143\u7d20\uff0c\u9700\u8981\u6839\u636ekey\u7684hash\u503c\u6765\u6c42\u5f97\u5bf9\u5e94\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u3002\u5982\u4f55\u8ba1\u7b97\u8fd9\u4e2a\u4f4d\u7f6e\u5c31\u662fhash\u7b97\u6cd5\u3002\u524d\u9762\u8bf4\u8fc7HashMap\u7684\u6570\u636e\u7ed3\u6784\u662f\u6570\u7ec4\u548c\u94fe\u8868\u7684\u7ed3\u5408\uff0c\u6240\u4ee5\u6211\u4eec\u5f53\u7136\u5e0c\u671b\u8fd9\u4e2aHashMap\u91cc\u9762\u7684\u5143\u7d20\u4f4d\u7f6e\u5c3d\u91cf\u7684\u5206\u5e03\u5747\u5300\u4e9b\uff0c\u5c3d\u91cf\u4f7f\u5f97\u6bcf\u4e2a\u4f4d\u7f6e\u4e0a\u7684\u5143\u7d20\u6570\u91cf\u53ea\u6709\u4e00\u4e2a\uff0c\u90a3\u4e48\u5f53\u6211\u4eec\u7528hash\u7b97\u6cd5\u6c42\u5f97\u8fd9\u4e2a\u4f4d\u7f6e\u7684\u65f6\u5019\uff0c\u9a6c\u4e0a\u5c31\u53ef\u4ee5\u77e5\u9053\u5bf9\u5e94\u4f4d\u7f6e\u7684\u5143\u7d20\u5c31\u662f\u6211\u4eec\u8981\u7684\uff0c\u800c\u4e0d\u7528\u518d\u53bb\u904d\u5386\u94fe\u8868\u3002 <\/p>

\u6e90\u7801\u5206\u6790\uff1a<\/p>

HashMap\u6709\u4e24\u4e2a\u53c2\u6570\u5f71\u54cd\u5176\u6027\u80fd\uff1a\u521d\u59cb\u5bb9\u91cf\u548c\u8d1f\u8f7d\u56e0\u5b50\u3002\u5747\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u65b9\u6cd5\u6307\u5b9a\u5927\u5c0f\u3002<\/p>

\u5bb9\u91cfcapacity\u662fHashMap\u4e2dbucket\u54c8\u5e0c\u6876(Entry\u7684\u94fe\u8868)\u7684\u6570\u91cf\uff0c\u521d\u59cb\u5bb9\u91cf\u53ea\u662fHashMap\u5728\u521b\u5efa\u65f6\u7684\u5bb9\u91cf\uff0c\u6700\u5927\u8bbe\u7f6e\u521d\u59cb\u5bb9\u91cf\u662f2^30\uff0c\u9ed8\u8ba4\u521d\u59cb\u5bb9\u91cf\u662f<\/span>16\uff08\u5fc5\u987b\u4e3a<\/span>2\u7684\u5e42\uff09\uff0c\u89e3\u91ca\u4e00\u4e0b\uff0c\u5f53\u6570\u7ec4\u957f\u5ea6\u4e3a2\u7684n\u6b21\u5e42\u7684\u65f6\u5019\uff0c\u4e0d\u540c\u7684key\u901a\u8fc7<\/span>indexFor()\u65b9\u6cd5\u7b97\u5f97\u7684\u6570\u7ec4\u4f4d\u7f6e\u76f8\u540c\u7684\u51e0\u7387\u8f83\u5c0f\uff0c\u90a3\u4e48\u6570\u636e\u5728\u6570\u7ec4\u4e0a\u5206\u5e03\u5c31\u6bd4\u8f83\u5747\u5300\uff0c\u4e5f\u5c31\u662f\u8bf4\u78b0\u649e\u7684\u51e0\u7387\u5c0f\uff0c\u76f8\u5bf9\u7684\uff0cget()\u7684\u65f6\u5019\u5c31\u4e0d\u7528\u904d\u5386\u67d0\u4e2a\u4f4d\u7f6e\u4e0a\u7684\u94fe\u8868\uff0c\u8fd9\u6837\u67e5\u8be2\u6548\u7387\u4e5f\u5c31\u8f83\u9ad8\u4e86\u3002<\/span><\/p>

\u8d1f\u8f7d<\/span>\u56e0\u5b50loadFactor\u662fHashMap\u5728\u5176\u5bb9\u91cf\u81ea\u52a8\u589e\u52a0\u4e4b\u524d\u53ef\u4ee5\u8fbe\u5230\u591a\u6ee1\u7684\u4e00\u79cd\u5c3a\u5ea6\uff0c\u9ed8\u8ba4\u503c\u662f0.75\u3002<\/p>

\u5f53HashMapde\u7684\u957f\u5ea6\u8d85\u51fa\u4e86\u52a0\u8f7d\u56e0\u5b50\u4e0e\u5f53\u524d\u5bb9\u91cf\u7684\u4e58\u79ef\uff08\u9ed8\u8ba4<\/span>16*0.75=12\uff09\u65f6\uff0c\u901a\u8fc7\u8c03\u7528<\/span>resize\u65b9\u6cd5\u91cd\u65b0\u521b\u5efa\u4e00\u4e2a\u539f\u6765<\/span>HashMap\u5927\u5c0f\u7684\u4e24\u500d\u7684<\/span>newTable\u6570\u7ec4\uff0c\u6700\u5927\u6269\u5bb9\u52302^30+1\uff0c\u5e76\u5c06\u539f\u5148table\u7684\u5143\u7d20\u5168\u90e8\u79fb\u5230newTable\u91cc\u9762\uff0c\u91cd\u65b0\u8ba1\u7b97hash\uff0c\u7136\u540e\u518d\u91cd\u65b0\u6839\u636ehash\u5206\u914d\u4f4d\u7f6e\u3002\u8fd9\u4e2a\u8fc7\u7a0b\u53eb\u4f5crehash\uff0c\u56e0\u4e3a\u5b83\u8c03\u7528hash\u65b9\u6cd5\u627e\u5230\u65b0\u7684bucket\u4f4d\u7f6e\u3002<\/p>

\u6269\u5bb9\u673a\u5236\u6e90\u7801\u5206\u6790\uff1a<\/p>

\u6570\u7ec4\u6269\u5bb9\u4e4b\u540e\uff0c\u6700\u6d88\u8017\u6027\u80fd\u7684\u70b9\u5c31\u51fa\u73b0\u4e86\uff1a\u539f\u6570\u7ec4\u4e2d\u7684\u6570\u636e\u5fc5\u987b\u91cd\u65b0\u8ba1\u7b97\u5176\u5728\u65b0\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\uff0c\u5e76\u653e\u8fdb\u53bb\uff0c\u8fd9\u4e2a\u64cd\u4f5c\u662f\u6781\u5176\u6d88\u8017\u6027\u80fd\u7684\u3002\u6240\u4ee5\u5982\u679c\u6211\u4eec\u5df2\u7ecf\u9884\u77e5HashMap\u4e2d\u5143\u7d20\u7684\u4e2a\u6570\uff0c\u90a3\u4e48\u9884\u8bbe\u521d\u59cb\u5bb9\u91cf\u80fd\u591f\u6709\u6548\u7684\u63d0\u9ad8HashMap\u7684\u6027\u80fd\u3002<\/p>

\u91cd\u65b0\u8c03\u6574<\/span>HashMap\u5927\u5c0f\uff0c\u5f53\u591a\u7ebf\u7a0b\u7684\u60c5\u51b5\u4e0b\u53ef\u80fd\u4ea7\u751f\u6761\u4ef6\u7ade\u4e89\u3002\u56e0\u4e3a\u5982\u679c\u4e24\u4e2a\u7ebf\u7a0b\u90fd\u53d1\u73b0<\/span>HashMap\u9700\u8981\u91cd\u65b0\u8c03\u6574\u5927\u5c0f\u4e86\uff0c\u5b83\u4eec\u4f1a\u540c\u65f6\u8bd5\u7740\u8c03\u6574\u5927\u5c0f\u3002\u5728\u8c03\u6574\u5927\u5c0f\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5b58\u50a8\u5728\u94fe\u8868\u4e2d\u7684\u5143\u7d20\u7684\u6b21\u5e8f\u4f1a\u53cd\u8fc7\u6765\uff0c\u56e0\u4e3a\u79fb\u52a8\u5230\u65b0\u7684bucket\u4f4d\u7f6e\u7684\u65f6\u5019\uff0cHashMap\u5e76\u4e0d\u4f1a\u5c06\u5143\u7d20\u653e\u5728\u94fe\u8868\u7684\u5c3e\u90e8\uff0c\u800c\u662f\u653e\u5728\u5934\u90e8\uff0c\u8fd9\u662f\u4e3a\u4e86\u907f\u514d\u5c3e\u90e8\u904d\u5386(tail traversing)\u3002\u5982\u679c\u6761\u4ef6\u7ade\u4e89\u53d1\u751f\u4e86\uff0c\u90a3\u4e48\u5c31\u6b7b\u5faa\u73af\u4e86\u3002<\/p>

HashMap\u662f\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684\uff0c\u5728\u591a\u7ebf\u7a0b\u60c5\u51b5\u4e0b\u76f4\u63a5\u4f7f\u7528HashMap\u4f1a\u51fa\u73b0\u4e00\u4e9b\u83ab\u540d\u5176\u5999\u4e0d\u53ef\u9884\u77e5\u7684\u95ee\u9898\u3002\u5728\u591a\u7ebf\u7a0b\u4e0b\u4f7f\u7528<\/span>HashMap\uff0c\u6709\u51e0\u79cd\u65b9\u6848\uff1a<\/p>

A.\u5728\u5916\u90e8\u5305\u88c5<\/span>HashMap\uff0c\u5b9e\u73b0\u540c\u6b65\u673a\u5236<\/p>

B.\u4f7f\u7528<\/span>Map m = Collections.synchronizedMap(new HashMap(...));\u5b9e\u73b0\u540c\u6b65\uff08\u5b98\u65b9\u53c2\u8003\u65b9\u6848\uff0c\u4f46\u4e0d\u5efa\u8bae\u4f7f\u7528\uff0c\u4f7f\u7528\u8fed\u4ee3\u5668\u904d\u5386\u7684\u65f6\u5019\u4fee\u6539\u6620\u5c04\u7ed3\u6784\u5bb9\u6613\u51fa\u9519\uff09<\/p>

D.\u4f7f\u7528<\/span>java<\/a>.util.HashTable\uff0c\u6548\u7387\u6700\u4f4e\uff08\u51e0\u4e4e\u88ab\u6dd8\u6c70\u4e86\uff09<\/p>

E.\u4f7f\u7528<\/span>java<\/a>.util.concurrent.ConcurrentHashMap\uff0c\u76f8\u5bf9\u5b89\u5168\uff0c\u6548\u7387\u9ad8\uff08\u5efa\u8bae\u4f7f\u7528\uff09<\/p>

\u6ce8\u610f\u4e00\u4e2a\u5c0f\u95ee\u9898\uff0cHashMap\u6240\u6709\u96c6\u5408\u7c7b\u89c6\u56fe\u6240\u8fd4\u56de\u8fed\u4ee3\u5668\u90fd\u662f\u5feb\u901f\u5931\u8d25\u7684(fail-fast)\uff0c\u5728\u8fed\u4ee3\u5668\u521b\u5efa\u4e4b\u540e\uff0c\u5982\u679c\u4ece\u7ed3\u6784\u4e0a\u5bf9\u6620\u5c04\u8fdb\u884c\u4fee\u6539\uff0c\u9664\u975e\u901a\u8fc7\u8fed\u4ee3\u5668\u81ea\u8eab\u7684 remove \u6216 add \u65b9\u6cd5\uff0c\u5176\u4ed6\u4efb\u4f55\u65f6\u95f4\u4efb\u4f55\u65b9\u5f0f\u7684\u4fee\u6539\uff0c\u8fed\u4ee3\u5668\u90fd\u5c06\u629b\u51fa ConcurrentModificationException\u3002\u3002\u56e0\u6b64\uff0c\u9762\u5bf9\u5e76\u53d1\u7684\u4fee\u6539\uff0c\u8fed\u4ee3\u5668\u5f88\u5feb\u5c31\u4f1a\u5b8c\u5168\u5931\u8d25\u3002<\/p>

JDK1.8\u7684HashMap\u6e90\u7801\u5b9e\u73b0\u548c1.7\u662f\u4e0d\u4e00\u6837\u7684\uff0c\u6709\u5f88\u5927\u4e0d\u540c\uff0c\u5176\u5e95\u5c42\u6570\u636e\u7ed3\u6784\u4e5f\u4e0d\u4e00\u6837\uff0c\u5f15\u5165\u4e86\u7ea2\u9ed1\u6811\u7ed3\u6784\u3002\u6709\u7f51\u53cb\u6d4b\u8bd5\u8fc7\uff0cJDK1.8HashMap\u7684\u6027\u80fd\u8981\u9ad8\u4e8eJDK1.7 15%\u4ee5\u4e0a\uff0c\u5728\u67d0\u4e9bsize\u7684\u533a\u57df\u4e0a\uff0c\u751a\u81f3\u9ad8??100%\u3002\u968f\u7740size\u7684\u53d8\u5927\uff0cJDK1.7\u7684\u82b1\u8d39\u65f6\u95f4\u662f\u589e\u957f\u7684\u8d8b\u52bf\uff0c\u800cJDK1.8\u662f\u660e\u663e\u7684\u964d\u4f4e\u8d8b\u52bf\uff0c\u5e76\u4e14\u5448\u73b0\u5bf9\u6570\u589e\u957f\u7a33\u5b9a\u3002\u5f53\u4e00\u4e2a\u94fe\u8868\u957f\u5ea6\u5927\u4e8e8\u7684\u65f6\u5019\uff0cHashMap\u4f1a\u52a8\u6001\u7684\u5c06\u5b83\u66ff\u6362\u6210\u4e00\u4e2a\u7ea2\u9ed1\u6811\uff08JDK1.8\u5f15\u5165\u7ea2\u9ed1\u6811\u5927\u7a0b\u5ea6\u4f18\u5316\u4e86HashMap\u7684\u6027\u80fd\uff09\uff0c\u8fd9\u4f1a\u5c06\u65f6\u95f4\u590d\u6742\u5ea6\u4eceO(n)\u964d\u4e3aO(logn)\u3002<\/p>","orderid":"0","title":"JDK1.7\u4e2dHashMap\u5e95\u5c42\u5b9e\u73b0\u539f\u7406","smalltitle":"","mid":"0","fname":"linux\u7f16\u7a0b\u57fa\u7840","special_id":"0","bak_id":"0","info":"0","hits":"307","pages":"1","comments":"0","posttime":"2017-12-14 14:32:02","list":"1513233122","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"JDK1.7<\/A> HashMap<\/A> \u5e95\u5c42<\/A> \u5b9e\u73b0<\/A> \u539f\u7406<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"113.110.149.170","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"JDK1.7\u4e2dHashMap\u5e95\u5c42\u5b9e\u73b0\u539f\u7406","lastview":"1714057119","digg_num":"6","digg_time":"1713987324","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}