{"id":70589,"date":"2026-02-02T04:41:02","date_gmt":"2026-02-01T20:41:02","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/70589.html"},"modified":"2026-02-02T04:41:02","modified_gmt":"2026-02-01T20:41:02","slug":"java%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/70589.html","title":{"rendered":"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7"},"content":{"rendered":"<h2>1. \u5b57\u7b26\u4e32\u64cd\u4f5c\u4f18\u5316<\/h2>\n<h3>1.1 \u4f7f\u7528StringBuilder\u8fdb\u884c\u5b57\u7b26\u4e32\u62fc\u63a5<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u5728\u5faa\u73af\u4e2d\u4f7f\u7528&#034;&#043;&#034;\u62fc\u63a5\u5b57\u7b26\u4e32<\/span><br \/>\n<span class=\"token class-name\">String<\/span> result <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10000<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    result <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u7684StringBuilder\u5bf9\u8c61<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u663e\u5f0f\u4f7f\u7528StringBuilder<\/span><br \/>\n<span class=\"token class-name\">StringBuilder<\/span> sb <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">StringBuilder<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10000<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    sb<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token class-name\">String<\/span> result <span class=\"token operator\">&#061;<\/span> sb<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">StringConcatOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u5faa\u73af\u6b21\u6570&#xff1a;10\u4e07\u6b21&#xff08;\u8db3\u591f\u653e\u5927\u6027\u80fd\u5dee\u5f02&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> LOOP_COUNT <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">100000<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u65b9\u5f0f1&#xff1a;\u5faa\u73af\u4e2d\u4f7f\u7528&#034;&#043;&#034;\u62fc\u63a5\u5b57\u7b26\u4e32&#xff08;\u4f4e\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> plusConcatTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testPlusConcat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u65b9\u5f0f2&#xff1a;\u663e\u5f0f\u4f7f\u7528StringBuilder\u62fc\u63a5&#xff08;\u9ad8\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> stringBuilderTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testStringBuilderConcat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; \u5b57\u7b26\u4e32\u62fc\u63a5\u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5faa\u73af\u4e2d\u4f7f\u7528\\\\&#034;&#043;\\\\&#034;\u62fc\u63a5\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> plusConcatTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f7f\u7528StringBuilder\u62fc\u63a5\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> stringBuilderTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5\u5faa\u73af\u4e2d\u7528&#034;&#043;&#034;\u62fc\u63a5\u5b57\u7b26\u4e32\u7684\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testPlusConcat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> result <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u4f1a\u521b\u5efa\u65b0\u7684StringBuilder&#xff0c;\u62fc\u63a5\u540e\u8f6cString<\/span><br \/>\n            result <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c\u957f\u5ea6&#xff08;\u9a8c\u8bc1\u62fc\u63a5\u5b8c\u6210&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\&#034;&#043;\\\\&#034;\u62fc\u63a5\u7ed3\u679c\u957f\u5ea6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> result<span class=\"token punctuation\">.<\/span><span class=\"token function\">length<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5\u663e\u5f0f\u4f7f\u7528StringBuilder\u62fc\u63a5\u5b57\u7b26\u4e32\u7684\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testStringBuilderConcat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u521d\u59cb\u5316StringBuilder&#xff08;\u53ef\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u8fdb\u4e00\u6b65\u4f18\u5316&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">StringBuilder<\/span> sb <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">StringBuilder<\/span><span class=\"token punctuation\">(<\/span>LOOP_COUNT <span class=\"token operator\">*<\/span> <span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u9884\u4f30\u6bcf\u4e2a\u6570\u5b57\u53605\u4e2a\u5b57\u7b26&#xff0c;\u51cf\u5c11\u6269\u5bb9<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u76f4\u63a5\u5728\u539f\u6709\u7f13\u51b2\u533a\u8ffd\u52a0&#xff0c;\u65e0\u65b0\u5bf9\u8c61\u521b\u5efa<\/span><br \/>\n            sb<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> result <span class=\"token operator\">&#061;<\/span> sb<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c\u957f\u5ea6&#xff08;\u9a8c\u8bc1\u62fc\u63a5\u5b8c\u6210&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;StringBuilder\u62fc\u63a5\u7ed3\u679c\u957f\u5ea6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> result<span class=\"token punctuation\">.<\/span><span class=\"token function\">length<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u5dee\u5f02&#xff1a;&#043; \u62fc\u63a5\u6bcf\u6b21\u5faa\u73af\u521b\u5efa\u65b0\u7684 StringBuilder\/String \u5bf9\u8c61&#xff0c;\u800c\u663e\u5f0f StringBuilder \u4ec5\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61&#xff0c;\u65e0\u989d\u5916\u5f00\u9500\u3002<\/li>\n<li>\u4f18\u5316\u6280\u5de7&#xff1a;\n<ul>\n<li>\u5faa\u73af\u62fc\u63a5\u5b57\u7b26\u4e32\u65f6&#xff0c;\u5fc5\u987b\u663e\u5f0f\u4f7f\u7528 StringBuilder&#xff08;\u591a\u7ebf\u7a0b\u573a\u666f\u7528 StringBuffer&#xff09;&#xff1b;<\/li>\n<li>\u521d\u59cb\u5316 StringBuilder \u65f6\u5c3d\u91cf\u6307\u5b9a\u9884\u4f30\u521d\u59cb\u5bb9\u91cf&#xff0c;\u907f\u514d\u5185\u90e8\u6570\u7ec4\u6269\u5bb9\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u4f8b\u5916\u573a\u666f&#xff1a;\u5355\u6b21\u62fc\u63a5&#xff08;\u5982 str &#061; a &#043; b &#043; c&#xff09;\u65e0\u9700\u624b\u52a8\u7528 StringBuilder&#xff0c;\u7f16\u8bd1\u5668\u4f1a\u81ea\u52a8\u4f18\u5316\u4e3a\u4e00\u6b21 StringBuilder \u62fc\u63a5&#xff0c;\u6027\u80fd\u65e0\u5dee\u5f02\u3002<\/li>\n<\/ul>\n<h3>1.2 \u5b57\u7b26\u4e32\u5e38\u91cf\u6c60\u7684\u5229\u7528<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u4e0d\u5fc5\u8981\u7684\u5bf9\u8c61\u521b\u5efa<\/span><br \/>\n<span class=\"token class-name\">String<\/span> str1 <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">String<\/span> str2 <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u5229\u7528\u5e38\u91cf\u6c60<\/span><br \/>\n<span class=\"token class-name\">String<\/span> str1 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">String<\/span> str2 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ str1 &#061;&#061; str2 \u4e3a true<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">StringObjectOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u5faa\u73af\u6b21\u6570&#xff1a;100\u4e07\u6b21&#xff08;\u653e\u5927\u5185\u5b58\/\u6027\u80fd\u5dee\u5f02&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> LOOP_COUNT <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1000000<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 1. \u9a8c\u8bc1\u5bf9\u8c61\u552f\u4e00\u6027 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; 1. \u5bf9\u8c61\u552f\u4e00\u6027\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u65b9\u5f0f1&#xff1a;new String \u521b\u5efa&#xff08;\u6bcf\u6b21\u65b0\u5bf9\u8c61&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> strNew1 <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> strNew2 <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;new String(\\\\&#034;hello\\\\&#034;) &#061;&#061; new String(\\\\&#034;hello\\\\&#034;): &#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>strNew1 <span class=\"token operator\">&#061;&#061;<\/span> strNew2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ false<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;new String \u5185\u5bb9\u76f8\u7b49\u6027: &#034;<\/span> <span class=\"token operator\">&#043;<\/span> strNew1<span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>strNew2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ true&#xff08;\u5185\u5bb9\u76f8\u540c&#xff09;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u65b9\u5f0f2&#xff1a;\u5e38\u91cf\u6c60\u521b\u5efa&#xff08;\u590d\u7528\u540c\u4e00\u5bf9\u8c61&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> strPool1 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> strPool2 <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\&#034;hello\\\\&#034; &#061;&#061; \\\\&#034;hello\\\\&#034;: &#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>strPool1 <span class=\"token operator\">&#061;&#061;<\/span> strPool2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ true<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5e38\u91cf\u6c60 \u5185\u5bb9\u76f8\u7b49\u6027: &#034;<\/span> <span class=\"token operator\">&#043;<\/span> strPool1<span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>strPool2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ true<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u989d\u5916\u9a8c\u8bc1&#xff1a;\u5e38\u91cf\u6c60 vs new String<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\&#034;hello\\\\&#034; &#061;&#061; new String(\\\\&#034;hello\\\\&#034;): &#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>strPool1 <span class=\"token operator\">&#061;&#061;<\/span> strNew1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ false<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 2. \u6027\u80fd\/\u5185\u5b58\u5f00\u9500\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; 2. \u6027\u80fd\u8017\u65f6\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5 new String \u521b\u5efa100\u4e07\u6b21\u8017\u65f6<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> newStringTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testNewStringCreation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5 \u5e38\u91cf\u6c60 \u521b\u5efa100\u4e07\u6b21\u8017\u65f6<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> poolStringTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testPoolStringCreation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;new String \u521b\u5efa100\u4e07\u6b21\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> newStringTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5e38\u91cf\u6c60 \u521b\u5efa100\u4e07\u6b21\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> poolStringTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 new String \u521b\u5efa\u5927\u91cf\u5bf9\u8c61\u7684\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testNewStringCreation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u5bf9\u8c61&#xff0c;\u6d88\u8017\u5185\u5b58&#043;GC\u8d44\u6e90<\/span><br \/>\n            <span class=\"token class-name\">String<\/span> str <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u907f\u514dJIT\u4f18\u5316\u6389\u65e0\u64cd\u4f5c\u7684\u5bf9\u8c61\u521b\u5efa<\/span><br \/>\n            str<span class=\"token punctuation\">.<\/span><span class=\"token function\">hashCode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 \u5e38\u91cf\u6c60 \u590d\u7528\u5bf9\u8c61\u7684\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testPoolStringCreation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u590d\u7528\u5e38\u91cf\u6c60\u4e2d\u7684\u540c\u4e00\u4e2a\u5bf9\u8c61&#xff0c;\u65e0\u65b0\u5bf9\u8c61\u521b\u5efa<\/span><br \/>\n            <span class=\"token class-name\">String<\/span> str <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;hello&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u907f\u514dJIT\u4f18\u5316<\/span><br \/>\n            str<span class=\"token punctuation\">.<\/span><span class=\"token function\">hashCode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u533a\u522b&#xff1a;new String(&#034;hello&#034;) \u6bcf\u6b21\u521b\u5efa\u65b0\u5bf9\u8c61&#xff08;\u5806\u5185\u5b58&#xff09;&#xff0c;\u800c \u201chello\u201d \u590d\u7528\u5e38\u91cf\u6c60\u4e2d\u7684\u5bf9\u8c61&#xff0c;\u907f\u514d\u91cd\u590d\u521b\u5efa\u3002<\/li>\n<li>\u4f18\u5316\u539f\u5219&#xff1a;\n<ul>\n<li>\u65e5\u5e38\u5f00\u53d1\u4e2d&#xff0c;\u9664\u975e\u6709\u7279\u6b8a\u9700\u6c42&#xff08;\u5982\u9700\u8981\u72ec\u7acb\u7684\u5bf9\u8c61\u5f15\u7528&#xff09;&#xff0c;\u5426\u5219\u7edd\u5bf9\u4e0d\u8981\u7528 new String(&#034;xxx&#034;)&#xff0c;\u76f4\u63a5\u7528 \u201cxxx\u201d \u8d4b\u503c\u5373\u53ef&#xff1b;<\/li>\n<li>\u5e38\u91cf\u6c60\u4e0d\u4ec5\u8282\u7701\u5185\u5b58&#xff0c;\u8fd8\u80fd\u5927\u5e45\u63d0\u5347\u6027\u80fd&#xff0c;\u5c24\u5176\u5728\u9ad8\u9891\u521b\u5efa\u76f8\u540c\u5b57\u7b26\u4e32\u7684\u573a\u666f\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u6269\u5c55\u77e5\u8bc6\u70b9&#xff1a;\u5982\u679c\u5df2\u6709\u5b57\u7b26\u4e32\u5bf9\u8c61\u60f3\u5165\u6c60&#xff0c;\u53ef\u4f7f\u7528 str.intern() \u65b9\u6cd5&#xff08;JDK7&#043; \u540e\u4f1a\u5c06\u5bf9\u8c61\u5f15\u7528\u653e\u5165\u5e38\u91cf\u6c60&#xff09;\u3002<\/li>\n<\/ul>\n<h3>1.3 \u6b63\u5219\u8868\u8fbe\u5f0f\u7f13\u5b58Pattern<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u91cd\u590d\u7f16\u8bd1\u6b63\u5219\u8868\u8fbe\u5f0f<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">boolean<\/span> <span class=\"token function\">validateEmail<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> email<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> email<span class=\"token punctuation\">.<\/span><span class=\"token function\">matches<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;^[A-Za-z0-9&#043;_.-]&#043;&#064;[A-Za-z0-9.-]&#043;$&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6bcf\u6b21\u8c03\u7528\u90fd\u7f16\u8bd1Pattern<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u7f13\u5b58Pattern\u5bf9\u8c61<\/span><br \/>\njavaprivate <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Pattern<\/span> EMAIL_PATTERN <span class=\"token operator\">&#061;<\/span><br \/>\n    <span class=\"token class-name\">Pattern<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">compile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;^[A-Za-z0-9&#043;_.-]&#043;&#064;[A-Za-z0-9.-]&#043;$&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">boolean<\/span> <span class=\"token function\">validateEmailOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> email<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> EMAIL_PATTERN<span class=\"token punctuation\">.<\/span><span class=\"token function\">matcher<\/span><span class=\"token punctuation\">(<\/span>email<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">matches<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>regex<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Pattern<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">RegexOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u8c03\u7528\u6b21\u6570&#xff1a;100\u4e07\u6b21&#xff08;\u653e\u5927\u6027\u80fd\u5dee\u5f02&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> CALL_COUNT <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1000000<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u7528\u7684\u90ae\u7bb1&#xff08;\u6a21\u62df\u771f\u5b9e\u9a8c\u8bc1\u573a\u666f&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span> TEST_EMAIL <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;test123&#064;example.com&#034;<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u7f13\u5b58\u7f16\u8bd1\u540e\u7684Pattern\u5bf9\u8c61&#xff08;\u4ec5\u7f16\u8bd1\u4e00\u6b21&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Pattern<\/span> EMAIL_PATTERN <span class=\"token operator\">&#061;<\/span><br \/>\n        <span class=\"token class-name\">Pattern<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">compile<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;^[A-Za-z0-9&#043;_.-]&#043;&#064;[A-Za-z0-9.-]&#043;$&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u65b9\u5f0f1&#xff1a;\u91cd\u590d\u7f16\u8bd1\u6b63\u5219&#xff08;\u4f4e\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> unoptimizedTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testUnoptimizedValidate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u65b9\u5f0f2&#xff1a;\u7f13\u5b58Pattern&#xff08;\u9ad8\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> optimizedTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testOptimizedValidate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; \u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u91cd\u590d\u7f16\u8bd1\u6b63\u5219\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> unoptimizedTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7f13\u5b58Pattern\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> optimizedTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;\u6bcf\u6b21\u8c03\u7528\u90fd\u7f16\u8bd1\u6b63\u5219\u8868\u8fbe\u5f0f&#xff08;\u95ee\u9898\u4ee3\u7801&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testUnoptimizedValidate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> CALL_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u8c03\u7528matches()\u90fd\u4f1a\u91cd\u65b0\u7f16\u8bd1\u6b63\u5219\u8868\u8fbe\u5f0f<\/span><br \/>\n            <span class=\"token function\">validateEmail<\/span><span class=\"token punctuation\">(<\/span>TEST_EMAIL<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u95ee\u9898\u4ee3\u7801&#xff1a;\u91cd\u590d\u7f16\u8bd1\u6b63\u5219<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">boolean<\/span> <span class=\"token function\">validateEmail<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> email<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>email <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> email<span class=\"token punctuation\">.<\/span><span class=\"token function\">matches<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;^[A-Za-z0-9&#043;_.-]&#043;&#064;[A-Za-z0-9.-]&#043;$&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;\u7f13\u5b58Pattern\u5bf9\u8c61&#xff08;\u4f18\u5316\u65b9\u6848&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testOptimizedValidate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> CALL_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u590d\u7528\u5df2\u7f16\u8bd1\u7684Pattern&#xff0c;\u4ec5\u521b\u5efaMatcher<\/span><br \/>\n            <span class=\"token function\">validateEmailOptimized<\/span><span class=\"token punctuation\">(<\/span>TEST_EMAIL<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u4f18\u5316\u4ee3\u7801&#xff1a;\u590d\u7528\u7f16\u8bd1\u540e\u7684Pattern<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">boolean<\/span> <span class=\"token function\">validateEmailOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> email<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>email <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4ec5\u521b\u5efaMatcher&#xff0c;\u65e0\u6b63\u5219\u7f16\u8bd1\u5f00\u9500<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> EMAIL_PATTERN<span class=\"token punctuation\">.<\/span><span class=\"token function\">matcher<\/span><span class=\"token punctuation\">(<\/span>email<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">matches<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u5dee\u5f02&#xff1a;\u91cd\u590d\u7f16\u8bd1\u65b9\u5f0f\u6bcf\u6b21\u8c03\u7528\u90fd\u6267\u884c\u6b63\u5219\u7f16\u8bd1&#xff08;\u9ad8\u8017\u65f6&#xff09;&#xff0c;\u7f13\u5b58 Pattern \u4ec5\u7f16\u8bd1\u4e00\u6b21&#xff0c;\u540e\u7eed\u4ec5\u505a\u5339\u914d\u64cd\u4f5c&#xff08;\u4f4e\u8017\u65f6&#xff09;\u3002<\/li>\n<li>\u6700\u4f73\u5b9e\u8df5&#xff1a;\n<ul>\n<li>\u9ad8\u9891\u8c03\u7528\u7684\u6b63\u5219\u9a8c\u8bc1&#xff0c;\u5fc5\u987b\u5c06 Pattern \u58f0\u660e\u4e3astatic final\u5e38\u91cf\u7f13\u5b58&#xff1b;<\/li>\n<li>\u5373\u4f7f\u662f\u4f4e\u9891\u8c03\u7528&#xff0c;\u7f13\u5b58 Pattern \u4e5f\u4e0d\u4f1a\u6709\u4efb\u4f55\u526f\u4f5c\u7528&#xff0c;\u662f\u901a\u7528\u7684\u4f18\u5316\u539f\u5219\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u6269\u5c55\u63d0\u793a&#xff1a;\n<ul>\n<li>Pattern \u662f\u7ebf\u7a0b\u5b89\u5168\u7684&#xff0c;\u53ef\u4ee5\u591a\u7ebf\u7a0b\u5171\u4eab&#xff1b;<\/li>\n<li>Matcher \u662f\u975e\u7ebf\u7a0b\u5b89\u5168\u7684&#xff0c;\u9700\u5728\u65b9\u6cd5\u5185\u521b\u5efa&#xff0c;\u907f\u514d\u591a\u7ebf\u7a0b\u5171\u7528\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>2 \u96c6\u5408\u64cd\u4f5c\u4f18\u5316<\/h2>\n<h3>2.1 \u521d\u59cb\u5316\u65f6\u6307\u5b9a\u96c6\u5408\u5927\u5c0f<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf<\/span><br \/>\n<span class=\"token comment\">\/\/ \u9ed8\u8ba4\u521d\u59cb\u5bb9\u91cf\u662f 10&#xff0c;\u5f53\u5143\u7d20\u8d85\u8fc7\u5bb9\u91cf\u65f6\u4f1a\u89e6\u53d1\u6269\u5bb9&#xff08;\u521b\u5efa\u65b0\u6570\u7ec4 &#043; \u590d\u5236\u5143\u7d20&#xff09;&#xff0c;\u6269\u5bb9\u6b21\u6570\u8d8a\u591a&#xff0c;\u6027\u80fd\u635f\u8017\u8d8a\u5927\u3002<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u9ed8\u8ba4\u521d\u59cb\u5bb9\u91cf\u662f 16\u3001\u8d1f\u8f7d\u56e0\u5b50 0.75&#xff0c;\u5f53\u5143\u7d20\u6570\u8fbe\u5230 \u5bb9\u91cf*\u8d1f\u8f7d\u56e0\u5b50&#xff08;12&#xff09;\u65f6\u89e6\u53d1\u6269\u5bb9&#xff08;\u91cd\u65b0\u54c8\u5e0c &#043; \u8fc1\u79fb\u6570\u636e&#xff09;&#xff0c;\u6269\u5bb9\u6210\u672c\u8fdc\u9ad8\u4e8e ArrayList\u3002<\/span><br \/>\n<span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff08;\u9884\u4f30\u5927\u5c0f&#xff09;<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ HashMap&#xff1a;\u521d\u59cb\u5bb9\u91cf &#061; \u9884\u4f30\u5143\u7d20\u6570 \/ \u8d1f\u8f7d\u56e0\u5b50&#xff08;\u9ed8\u8ba4 0.75&#xff09;&#xff0c;\u5411\u4e0a\u53d6\u6574&#xff08;\u907f\u514d\u6269\u5bb9&#xff09;\u3002<\/span><br \/>\n<span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.75f<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ArrayList<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">HashMap<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">List<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CollectionCapacityOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u6570\u636e\u91cf&#xff1a;100\u4e07\u6761&#xff08;\u8db3\u591f\u89e6\u53d1\u591a\u6b21\u6269\u5bb9&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> DATA_SIZE <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1000000<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u6d4b\u8bd5 ArrayList \u6027\u80fd &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff08;\u9ed8\u8ba410&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> arrayListNoCapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testArrayListWithoutCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff08;\u9884\u4f30100\u4e07&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> arrayListWithCapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testArrayListWithCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u6d4b\u8bd5 HashMap \u6027\u80fd &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff08;\u9ed8\u8ba416&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> hashMapNoCapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testHashMapWithoutCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff08;\u9884\u4f30100\u4e07&#xff0c;\u8d1f\u8f7d\u56e0\u5b50\u9ed8\u8ba40.75&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> hashMapWithCapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testHashMapWithCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; ArrayList \u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> arrayListNoCapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> arrayListWithCapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; HashMap \u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> hashMapNoCapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> hashMapWithCapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 ArrayList \u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u7684\u63d2\u5165\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testArrayListWithoutCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u9ed8\u8ba4\u5bb9\u91cf10<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            list<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 ArrayList \u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u7684\u63d2\u5165\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testArrayListWithCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u76f4\u63a5\u6307\u5b9a\u9884\u4f30\u5bb9\u91cf&#xff0c;\u907f\u514d\u6269\u5bb9<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span>DATA_SIZE<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            list<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 HashMap \u4e0d\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u7684\u63d2\u5165\u8017\u65f6<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testHashMapWithoutCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u9ed8\u8ba4\u5bb9\u91cf16&#xff0c;\u8d1f\u8f7d\u56e0\u5b500.75<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5 HashMap \u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u7684\u63d2\u5165\u8017\u65f6<br \/>\n     * \u516c\u5f0f&#xff1a;\u9884\u4f30\u5bb9\u91cf \/ \u8d1f\u8f7d\u56e0\u5b50&#xff08;\u5411\u4e0a\u53d6\u6574&#xff09;&#xff0c;\u907f\u514d\u6269\u5bb9<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testHashMapWithCapacity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u8ba1\u7b97\u6700\u4f18\u521d\u59cb\u5bb9\u91cf&#xff1a;1000000 \/ 0.75 \u2248 1333334&#xff08;\u907f\u514d\u6269\u5bb9&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> initialCapacity <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span>DATA_SIZE <span class=\"token operator\">\/<\/span> <span class=\"token number\">0.75f<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span>initialCapacity<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0.75f<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u4f18\u5316\u70b9&#xff1a;\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf\u80fd\u907f\u514d\u96c6\u5408\u6269\u5bb9\u65f6\u7684 \u201c\u6570\u7ec4\u590d\u5236 \/ \u54c8\u5e0c\u91cd\u8ba1\u7b97\u201d \u7b49\u8017\u65f6\u64cd\u4f5c&#xff0c;\u6570\u636e\u91cf\u8d8a\u5927&#xff0c;\u4f18\u5316\u6548\u679c\u8d8a\u663e\u8457\u3002<\/li>\n<li>\u8ba1\u7b97\u6280\u5de7&#xff1a;\n<ul>\n<li>ArrayList&#xff1a;\u76f4\u63a5\u6307\u5b9a\u9884\u4f30\u5143\u7d20\u6570\u91cf\u5373\u53ef&#xff1b;<\/li>\n<li>HashMap&#xff1a;\u521d\u59cb\u5bb9\u91cf &#061; \u9884\u4f30\u5143\u7d20\u6570 \/ \u8d1f\u8f7d\u56e0\u5b50&#xff08;\u9ed8\u8ba4 0.75&#xff09;&#xff0c;\u5411\u4e0a\u53d6\u6574&#xff08;\u907f\u514d\u6269\u5bb9&#xff09;\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u4f7f\u7528\u573a\u666f&#xff1a;\u5f53\u80fd\u9884\u4f30\u96c6\u5408\u7684\u6700\u7ec8\u5143\u7d20\u6570\u91cf\u65f6&#xff0c;\u52a1\u5fc5\u6307\u5b9a\u521d\u59cb\u5bb9\u91cf&#xff1b;\u82e5\u65e0\u6cd5\u9884\u4f30&#xff0c;\u5219\u4f7f\u7528\u9ed8\u8ba4\u503c\u5373\u53ef\u3002<\/li>\n<\/ul>\n<h3>2.2 \u4f7f\u7528EntrySet\u904d\u5386Map<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u4f7f\u7528keySet()\u904d\u5386Map,\u4f4e\u6548\u904d\u5386<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key <span class=\"token operator\">:<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">keySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">Object<\/span> value <span class=\"token operator\">&#061;<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u6bcf\u6b21\u90fd\u8981\u67e5\u627e<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528entrySet()\u76f4\u63a5\u83b7\u53d6\u952e\u503c\u5bf9,\u9ad8\u6548\u904d\u5386<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Map<span class=\"token punctuation\">.<\/span>Entry<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> entry <span class=\"token operator\">:<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">entrySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">String<\/span> key <span class=\"token operator\">&#061;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getKey<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">Object<\/span> value <span class=\"token operator\">&#061;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getValue<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">HashMap<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MapTraversalCompare<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u51c6\u5907\u6d4b\u8bd5\u6570\u636e&#xff1a;\u521b\u5efa\u4e00\u4e2a\u5305\u542b100\u4e07\u6761\u6570\u636e\u7684Map<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> dataSize <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1000000<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> dataSize<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ 2. \u65b9\u5f0f1&#xff1a;\u4f7f\u7528keySet()\u904d\u5386&#xff08;\u4f4e\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime1 <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key <span class=\"token operator\">:<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">keySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u904d\u5386\u90fd\u8981\u901a\u8fc7key\u91cd\u65b0\u4eceMap\u4e2d\u67e5\u627evalue&#xff0c;\u5b58\u5728\u91cd\u590d\u67e5\u627e<\/span><br \/>\n            <span class=\"token class-name\">Integer<\/span> value <span class=\"token operator\">&#061;<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6267\u884c\u4e00\u4e2a\u7b80\u5355\u64cd\u4f5c&#xff08;\u907f\u514dJIT\u4f18\u5316\u5f71\u54cd\u7ed3\u679c&#xff09;<\/span><br \/>\n            <span class=\"token function\">doSomething<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime1 <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f7f\u7528keySet()\u904d\u5386\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>endTime1 <span class=\"token operator\">&#8211;<\/span> startTime1<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ 3. \u65b9\u5f0f2&#xff1a;\u4f7f\u7528entrySet()\u904d\u5386&#xff08;\u9ad8\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime2 <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Map<span class=\"token punctuation\">.<\/span>Entry<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> entry <span class=\"token operator\">:<\/span> map<span class=\"token punctuation\">.<\/span><span class=\"token function\">entrySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u76f4\u63a5\u4eceentry\u4e2d\u83b7\u53d6\u952e\u503c\u5bf9&#xff0c;\u65e0\u9700\u91cd\u590d\u67e5\u627e<\/span><br \/>\n            <span class=\"token class-name\">String<\/span> key <span class=\"token operator\">&#061;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getKey<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token class-name\">Integer<\/span> value <span class=\"token operator\">&#061;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getValue<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6267\u884c\u76f8\u540c\u7684\u7b80\u5355\u64cd\u4f5c<\/span><br \/>\n            <span class=\"token function\">doSomething<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime2 <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f7f\u7528entrySet()\u904d\u5386\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>endTime2 <span class=\"token operator\">&#8211;<\/span> startTime2<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u7a7a\u65b9\u6cd5&#xff0c;\u4ec5\u7528\u4e8e\u6a21\u62df\u904d\u5386\u8fc7\u7a0b\u4e2d\u7684\u4e1a\u52a1\u64cd\u4f5c&#xff0c;\u907f\u514dJIT\u4f18\u5316<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">doSomething<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span> value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u65e0\u5b9e\u9645\u903b\u8f91&#xff0c;\u4ec5\u5360\u4f4f\u6267\u884c\u6b65\u9aa4<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u5dee\u5f02&#xff1a;keySet() \u904d\u5386\u9700\u8981\u901a\u8fc7 key \u91cd\u590d\u67e5\u627e value&#xff08;\u4e24\u6b21\u904d\u5386&#xff09;&#xff0c;entrySet() \u76f4\u63a5\u83b7\u53d6\u952e\u503c\u5bf9&#xff08;\u4e00\u6b21\u904d\u5386&#xff09;&#xff0c;\u540e\u8005\u51cf\u5c11\u4e86\u54c8\u5e0c\u67e5\u627e\u7684\u5f00\u9500\u3002<\/li>\n<li>\u6027\u80fd\u7ed3\u8bba&#xff1a;\u6570\u636e\u91cf\u8d8a\u5927&#xff0c;entrySet() \u7684\u6548\u7387\u4f18\u52bf\u8d8a\u660e\u663e&#xff0c;\u65e5\u5e38\u5f00\u53d1\u4e2d\u904d\u5386 Map \u4f18\u5148\u4f7f\u7528 entrySet()\u3002<\/li>\n<li>\u989d\u5916\u63d0\u793a&#xff1a;\u5982\u679c\u4ec5\u9700\u8981\u904d\u5386 key \u6216\u4ec5\u9700\u8981\u904d\u5386 value&#xff0c;\u53ef\u76f4\u63a5\u7528 map.keySet() \u6216 map.values()&#xff0c;\u65e0\u9700\u7528 entrySet()&#xff1b;\u4f46\u540c\u65f6\u9700\u8981\u952e\u503c\u65f6&#xff0c;entrySet() \u662f\u6700\u4f18\u9009\u62e9\u3002<\/li>\n<\/ul>\n<h3>2.3 \u904d\u5386\u96c6\u5408\u4fee\u6539<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u589e\u5f3afor\u5faa\u73af\u904d\u5386\u96c6\u5408\u65f6\u76f4\u63a5\u5220\u9664\u5143\u7d20\u4f1a\u89e6\u53d1\u5e76\u53d1\u4fee\u6539\u5f02\u5e38<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">asList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> s <span class=\"token operator\">:<\/span> list<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\nlist<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u629b\u51faConcurrentModificationException    <\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528\u8fed\u4ee3\u5668\u7684remove\u65b9\u6cd5\u5b89\u5168\u5220\u9664\u5143\u7d20<\/span><br \/>\n<span class=\"token comment\">\/\/ 1. \u83b7\u53d6\u96c6\u5408\u5bf9\u5e94\u7684\u8fed\u4ee3\u5668\u5bf9\u8c61<\/span><br \/>\n<span class=\"token class-name\">Iterator<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> it <span class=\"token operator\">&#061;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">iterator<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ 2. \u5faa\u73af\u5224\u65ad\u662f\u5426\u8fd8\u6709\u4e0b\u4e00\u4e2a\u5143\u7d20<\/span><br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">.<\/span><span class=\"token function\">hasNext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token comment\">\/\/ 3. \u83b7\u53d6\u5f53\u524d\u8fed\u4ee3\u7684\u5143\u7d20&#xff08;\u5fc5\u987b\u5148\u8c03\u7528next()\u624d\u80fd\u8c03\u7528remove()&#xff09;<\/span><br \/>\n<span class=\"token class-name\">String<\/span> currentElement <span class=\"token operator\">&#061;<\/span> it<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>currentElement<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token comment\">\/\/ 4. \u8c03\u7528\u8fed\u4ee3\u5668\u7684remove\u65b9\u6cd5&#xff1a;\u4f1a\u540c\u6b65\u66f4\u65b0modCount\u548cexpectedModCount<\/span><br \/>\nit<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5b89\u5168\u5220\u9664&#xff1a;\u4e0d\u4f1a\u89e6\u53d1\u5e76\u53d1\u4fee\u6539\u5f02\u5e38<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u65b9\u68482&#xff1a;\u4f7f\u7528Java8&#043; removeIf<\/span><br \/>\nlist<span class=\"token punctuation\">.<\/span><span class=\"token function\">removeIf<\/span><span class=\"token punctuation\">(<\/span>s <span class=\"token operator\">-&gt;<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ \u65b9\u68483&#xff1a;\u521b\u5efa\u65b0\u96c6\u5408(\u9002\u5408\u5220\u9664\u5143\u7d20\u591a\u7684\u60c5\u51b5)<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> newList <span class=\"token operator\">&#061;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">stream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span>s <span class=\"token operator\">-&gt;<\/span> <span class=\"token operator\">!<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Collectors<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ArrayList<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ConcurrentModificationException<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u8865\u5145\u5bfc\u5165\u7f3a\u5931\u7684\u5f02\u5e38\u7c7b<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Iterator<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">List<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>stream<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Collectors<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">SafeRemoveElement<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/\/ \u7c7b\u540d\u4e0e\u6587\u4ef6\u540dSafeRemoveElement.java\u4e00\u81f4<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 1. \u9519\u8bef\u793a\u4f8b&#xff1a;\u589e\u5f3afor\u5faa\u73af\u76f4\u63a5\u5220\u9664\u5143\u7d20&#xff08;\u89e6\u53d1\u5f02\u5e38&#xff09; &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; 1. \u9519\u8bef\u65b9\u5f0f&#xff1a;\u589e\u5f3afor\u5faa\u73af\u76f4\u63a5\u5220\u9664 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> errorList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">asList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> s <span class=\"token operator\">:<\/span> errorList<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    errorList<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u89e6\u53d1ConcurrentModificationException<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ConcurrentModificationException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5f02\u5e38\u4fe1\u606f&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> e<span class=\"token punctuation\">.<\/span><span class=\"token function\">getClass<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getSimpleName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5220\u9664\u540e\u96c6\u5408\u72b6\u6001&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> errorList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u96c6\u5408\u53ef\u80fd\u5904\u4e8e\u4e0d\u4e00\u81f4\u72b6\u6001<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 2. \u6b63\u786e\u65b9\u68481&#xff1a;\u4f7f\u7528\u8fed\u4ee3\u5668\u7684remove()\u65b9\u6cd5 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; 2. \u6b63\u786e\u65b9\u68481&#xff1a;\u8fed\u4ee3\u5668remove() &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> iteratorList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">asList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">Iterator<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> it <span class=\"token operator\">&#061;<\/span> iteratorList<span class=\"token punctuation\">.<\/span><span class=\"token function\">iterator<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>it<span class=\"token punctuation\">.<\/span><span class=\"token function\">hasNext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">String<\/span> current <span class=\"token operator\">&#061;<\/span> it<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5fc5\u987b\u5148next()\u624d\u80fdremove()<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>current<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                it<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5b89\u5168\u5220\u9664&#xff0c;\u540c\u6b65\u66f4\u65b0\u4fee\u6539\u6b21\u6570<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5220\u9664\u540e\u96c6\u5408&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> iteratorList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ [a, c]<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 3. \u6b63\u786e\u65b9\u68482&#xff1a;Java8&#043; removeIf()&#xff08;\u7b80\u6d01\u9ad8\u6548&#xff09; &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; 3. \u6b63\u786e\u65b9\u68482&#xff1a;removeIf() &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> removeIfList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">asList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        removeIfList<span class=\"token punctuation\">.<\/span><span class=\"token function\">removeIf<\/span><span class=\"token punctuation\">(<\/span>s <span class=\"token operator\">-&gt;<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u4e00\u884c\u4ee3\u7801\u5b8c\u6210\u5b89\u5168\u5220\u9664<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u5220\u9664\u540e\u96c6\u5408&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> removeIfList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ [a, c]<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; 4. \u6b63\u786e\u65b9\u68483&#xff1a;\u6d41\u5f0f\u5904\u7406\u521b\u5efa\u65b0\u96c6\u5408 &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; 4. \u6b63\u786e\u65b9\u68483&#xff1a;\u6d41\u5f0f\u5904\u7406\u521b\u5efa\u65b0\u96c6\u5408 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> streamList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">asList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;c&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u8fc7\u6ee4\u6389\u4e0d\u9700\u8981\u7684\u5143\u7d20&#xff0c;\u6536\u96c6\u4e3a\u65b0\u96c6\u5408&#xff08;\u539f\u96c6\u5408\u4e0d\u53d8&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> newList <span class=\"token operator\">&#061;<\/span> streamList<span class=\"token punctuation\">.<\/span><span class=\"token function\">stream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span>s <span class=\"token operator\">-&gt;<\/span> <span class=\"token operator\">!<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">equals<\/span><span class=\"token punctuation\">(<\/span>s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token comment\">\/\/ \u4fdd\u7559\u975e&#034;b&#034;\u7684\u5143\u7d20<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Collectors<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u539f\u96c6\u5408&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> streamList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ [a, b, c]&#xff08;\u672a\u4fee\u6539&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u65b0\u96c6\u5408&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> newList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">\/\/ [a, c]<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u95ee\u9898&#xff1a;\n<ul>\n<li>\u589e\u5f3afor\u5faa\u73af\u672c\u8d28\u662f\u8fed\u4ee3\u5668\u904d\u5386&#xff0c;\u96c6\u5408\u7684remove\u65b9\u6cd5\u4f1a\u4fee\u6539modCount&#xff08;\u4fee\u6539\u6b21\u6570&#xff09;,\u800c\u8fed\u4ee3\u5668\u7684expectedModCount&#xff08;\u9884\u671f\u4fee\u6539\u6b21\u6570&#xff09;\u672a\u540c\u6b65&#xff0c;\u5bfc\u81f4\u6821\u9a8c\u5931\u8d25\u629b\u51fa\u5f02\u5e38(ConcurrentModificationException)\u3002<\/li>\n<li>\u8fed\u4ee3\u5668\u7684remove()\u65b9\u6cd5\u4f1a\u540c\u6b65\u66f4\u65b0modCount\u548cexpectedModCount&#xff0c;\u662f\u904d\u5386\u8fc7\u7a0b\u4e2d\u5220\u9664\u5143\u7d20\u7684\u5b89\u5168\u65b9\u5f0f\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u6700\u4f18\u65b9\u6848\u9009\u62e9&#xff1a;\n<ul>\n<li>\u7b80\u5355\u5220\u9664\u573a\u666f&#xff1a;\u4f18\u5148\u7528removeIf()&#xff08;\u4ee3\u7801\u6700\u7b80\u6d01&#xff09;&#xff1b;<\/li>\n<li>\u590d\u6742\u904d\u5386\u903b\u8f91&#xff08;\u9700\u989d\u5916\u5904\u7406\u5143\u7d20&#xff09;&#xff1a;\u7528\u8fed\u4ee3\u5668\u7684remove()&#xff1b;<\/li>\n<li>\u9700\u4fdd\u7559\u539f\u96c6\u5408 \/ \u5220\u9664\u5143\u7d20\u591a&#xff1a;\u7528\u6d41\u5f0f\u5904\u7406\u521b\u5efa\u65b0\u96c6\u5408\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u6ce8\u610f\u4e8b\u9879&#xff1a;\u8fed\u4ee3\u5668\u7684remove()\u6bcf\u6b21\u53ea\u80fd\u5220\u9664next()\u83b7\u53d6\u7684\u5f53\u524d\u5143\u7d20&#xff0c;\u4e14next()\u548cremove()\u9700\u6210\u5bf9\u8c03\u7528\u3002<\/li>\n<\/ul>\n<h3>2.4 \u9009\u62e9\u5408\u9002\u7684\u6570\u636e\u7ed3\u6784<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u5728\u4e0d\u5408\u9002\u7684\u573a\u666f\u4f7f\u7528LinkedList<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">LinkedList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10000<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    list<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ LinkedList\u7684\u968f\u673a\u8bbf\u95ee\u662fO(n)<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u6839\u636e\u8bbf\u95ee\u6a21\u5f0f\u9009\u62e9\u6570\u636e\u7ed3\u6784<\/span><br \/>\n<span class=\"token comment\">\/\/ 1. \u9ad8\u9891\u968f\u673a\u8bbf\u95ee&#xff08;get\/set\u6309\u7d22\u5f15\u64cd\u4f5c&#xff09;\u573a\u666f \u2192 \u9009ArrayList<\/span><br \/>\n<span class=\"token comment\">\/\/    ArrayList\u5e95\u5c42\u662f\u52a8\u6001\u6269\u5bb9\u7684\u6570\u7ec4&#xff0c;\u968f\u673a\u8bbf\u95ee\u65f6\u901a\u8fc7\u7d22\u5f15\u76f4\u63a5\u5b9a\u4f4d\u5185\u5b58\u5730\u5740&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6O(1)<\/span><br \/>\n<span class=\"token comment\">\/\/    \u7f3a\u70b9&#xff1a;\u6570\u7ec4\u4e2d\u95f4\u63d2\u5165\/\u5220\u9664\u9700\u8981\u79fb\u52a8\u5143\u7d20&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6O(n)<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ 2. \u9ad8\u9891\u63d2\u5165\/\u5220\u9664&#xff08;\u5c24\u5176\u662f\u4e2d\u95f4\u4f4d\u7f6e&#xff09;\u573a\u666f \u2192 \u9009LinkedList<\/span><br \/>\n<span class=\"token comment\">\/\/    LinkedList\u5e95\u5c42\u662f\u53cc\u5411\u94fe\u8868&#xff0c;\u63d2\u5165\/\u5220\u9664\u4ec5\u9700\u4fee\u6539\u8282\u70b9\u6307\u9488&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6O(1)&#xff08;\u627e\u5230\u8282\u70b9\u540e&#xff09;<\/span><br \/>\n<span class=\"token comment\">\/\/    \u7f3a\u70b9&#xff1a;\u968f\u673a\u8bbf\u95ee\u9700\u8981\u904d\u5386\u94fe\u8868&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6O(n)<\/span><br \/>\n<span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list2 <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">LinkedList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ 3. \u9700\u8981\u6309key\u81ea\u7136\u6392\u5e8f\/\u81ea\u5b9a\u4e49\u6392\u5e8f\u7684Map\u573a\u666f \u2192 \u9009TreeMap<\/span><br \/>\n<span class=\"token comment\">\/\/    TreeMap\u5e95\u5c42\u662f\u7ea2\u9ed1\u6811&#xff08;\u5e73\u8861\u4e8c\u53c9\u6811&#xff09;&#xff0c;\u4f1a\u81ea\u52a8\u5bf9key\u6392\u5e8f&#xff0c;\u589e\u5220\u67e5\u7684\u65f6\u95f4\u590d\u6742\u5ea6O(log n)<\/span><br \/>\n<span class=\"token comment\">\/\/    \u7f3a\u70b9&#xff1a;\u6027\u80fd\u7565\u4f4e\u4e8eHashMap&#xff0c;\u65e0\u6392\u5e8f\u9700\u6c42\u65f6\u4e0d\u5efa\u8bae\u4f7f\u7528<\/span><br \/>\n<span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> sortedMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">TreeMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ 4. \u65e0\u9700\u6392\u5e8f\u3001\u8ffd\u6c42\u6781\u81f4\u8bfb\u5199\u6027\u80fd\u7684Map\u573a\u666f \u2192 \u9009HashMap<\/span><br \/>\n<span class=\"token comment\">\/\/  HashMap\u5e95\u5c42\u662f\u6570\u7ec4&#043;\u94fe\u8868\/\u7ea2\u9ed1\u6811&#xff08;JDK1.8&#043;&#xff09;&#xff0c;\u589e\u5220\u67e5\u7684\u5e73\u5747\u65f6\u95f4\u590d\u6742\u5ea6O(1)<\/span><br \/>\n<span class=\"token comment\">\/\/    \u6ce8\u610f&#xff1a;HashMap\u662f\u65e0\u5e8f\u7684&#xff0c;\u7ebf\u7a0b\u4e0d\u5b89\u5168&#xff1b;\u9700\u7ebf\u7a0b\u5b89\u5168\u53ef\u9009ConcurrentHashMap&#xff08;\u4f18\u4e8eHashtable&#xff09;<\/span><br \/>\n<span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> fastMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ArrayList<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">HashMap<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">LinkedList<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">List<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">TreeMap<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">CollectionSelectOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u6570\u636e\u91cf&#xff1a;10000\u6761&#xff08;\u653e\u5927\u6027\u80fd\u5dee\u5f02&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> DATA_SIZE <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10000<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f1&#xff1a;\u9ad8\u9891\u968f\u673a\u8bbf\u95ee&#xff08;get&#xff09;\u2192 ArrayList vs LinkedList &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; \u573a\u666f1&#xff1a;\u9ad8\u9891\u968f\u673a\u8bbf\u95ee&#xff08;get&#xff09;&#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u521d\u59cb\u5316\u6570\u636e<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> arrayList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> linkedList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">LinkedList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arrayList<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            linkedList<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6d4b\u8bd5ArrayList\u968f\u673a\u8bbf\u95ee<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> arrayListGetTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testRandomAccess<\/span><span class=\"token punctuation\">(<\/span>arrayList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5LinkedList\u968f\u673a\u8bbf\u95ee<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> linkedListGetTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testRandomAccess<\/span><span class=\"token punctuation\">(<\/span>linkedList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ArrayList \u968f\u673a\u8bbf\u95ee\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> arrayListGetTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;LinkedList \u968f\u673a\u8bbf\u95ee\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> linkedListGetTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f2&#xff1a;\u9ad8\u9891\u4e2d\u95f4\u63d2\u5165 \u2192 ArrayList vs LinkedList &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; \u573a\u666f2&#xff1a;\u9ad8\u9891\u4e2d\u95f4\u63d2\u5165 &#061;&#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u91cd\u7f6e\u96c6\u5408\u5e76\u521d\u59cb\u5316\u57fa\u7840\u6570\u636e&#xff08;\u5173\u952e\u4fee\u590d&#xff1a;\u5148\u586b\u5145\u6570\u636e&#xff0c;\u518d\u6d4b\u8bd5\u63d2\u5165&#xff09;<\/span><br \/>\n        arrayList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        linkedList <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">LinkedList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u521d\u59cb\u5316\u57fa\u7840\u6570\u636e&#xff0c;\u4fdd\u8bc1\u4e2d\u95f4\u63d2\u5165\u7684\u7d22\u5f15\u5408\u6cd5<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arrayList<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            linkedList<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;data_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5ArrayList\u4e2d\u95f4\u63d2\u5165<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> arrayListInsertTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testMiddleInsert<\/span><span class=\"token punctuation\">(<\/span>arrayList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5LinkedList\u4e2d\u95f4\u63d2\u5165<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> linkedListInsertTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testMiddleInsert<\/span><span class=\"token punctuation\">(<\/span>linkedList<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;ArrayList \u4e2d\u95f4\u63d2\u5165\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> arrayListInsertTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;LinkedList \u4e2d\u95f4\u63d2\u5165\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> linkedListInsertTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f3&#xff1a;Map\u8bfb\u5199\u6027\u80fd \u2192 HashMap vs TreeMap &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\n&#061;&#061;&#061;&#061;&#061; \u573a\u666f3&#xff1a;Map\u8bfb\u5199\u6027\u80fd&#xff08;\u65e0\u5e8fvs\u6392\u5e8f&#xff09;&#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5HashMap&#xff08;\u65e0\u5e8f&#xff0c;\u9ad8\u6027\u80fd&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> hashMapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testMapOperation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d4b\u8bd5TreeMap&#xff08;\u6392\u5e8f&#xff0c;\u6027\u80fd\u7565\u4f4e&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> treeMapTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testMapOperation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">TreeMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;HashMap \u589e\u5220\u67e5\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> hashMapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;TreeMap \u589e\u5220\u67e5\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> treeMapTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1TreeMap\u7684\u6392\u5e8f\u7279\u6027<\/span><br \/>\n        <span class=\"token function\">testTreeMapSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5\u968f\u673a\u8bbf\u95ee&#xff08;get\u6309\u7d22\u5f15&#xff09;\u6027\u80fd<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testRandomAccess<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u968f\u673a\u8bbf\u95ee&#xff1a;\u904d\u5386\u6240\u6709\u7d22\u5f15\u7684\u5143\u7d20&#xff08;\u6a21\u62df\u9ad8\u9891get\u64cd\u4f5c&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            list<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5\u4e2d\u95f4\u4f4d\u7f6e\u63d2\u5165\u6027\u80fd&#xff08;\u4fee\u590d&#xff1a;\u52a8\u6001\u8ba1\u7b97\u4e2d\u95f4\u7d22\u5f15&#xff0c;\u907f\u514d\u8d8a\u754c&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testMiddleInsert<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> list<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u52a8\u6001\u8ba1\u7b97\u4e2d\u95f4\u7d22\u5f15&#xff08;\u907f\u514d\u786c\u7f16\u78015000\u5bfc\u81f4\u8d8a\u754c&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> middleIndex <span class=\"token operator\">&#061;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9ad8\u9891\u4e2d\u95f4\u63d2\u5165&#xff1a;\u5faa\u73af\u63d2\u51651000\u6761\u6570\u636e<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">1000<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            list<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span>middleIndex<span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;insert_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5Map\u7684\u589e\u5220\u67e5\u7efc\u5408\u6027\u80fd<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testMapOperation<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> map<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u65b0\u589e\u6570\u636e<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u67e5\u627e\u6570\u636e<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ 3. \u5220\u9664\u6570\u636e<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> DATA_SIZE <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            map<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_&#034;<\/span> <span class=\"token operator\">&#043;<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u9a8c\u8bc1TreeMap\u7684\u81ea\u52a8\u6392\u5e8f\u7279\u6027<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">testTreeMapSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> treeMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">TreeMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        treeMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_3&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        treeMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_1&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        treeMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_2&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\\\\nTreeMap \u81ea\u52a8\u6392\u5e8f\u7ed3\u679c&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> treeMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">keySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ [key_1, key_2, key_3]<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> hashMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        hashMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_3&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        hashMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_1&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        hashMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;key_2&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;HashMap \u65e0\u5e8f\u7ed3\u679c&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> hashMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">keySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u987a\u5e8f\u4e0d\u56fa\u5b9a<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u539f\u7406\u5206\u6790&#xff1a;ArrayList\u7684\u968f\u673a\u8bbf\u95ee\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(1)&#xff0c;\u800cLinkedList\u4e3aO(n)\u3002HashMap\u7684\u63d2\u5165\u548c\u67e5\u627e\u4e3aO(1)&#xff0c;TreeMap\u4e3aO(log n)\u3002\u6839\u636e\u5177\u4f53\u573a\u666f\u9009\u62e9\u6700\u5408\u9002\u7684\u6570\u636e\u7ed3\u6784\u662f\u6027\u80fd\u4f18\u5316\u7684\u57fa\u7840\u3002<\/li>\n<li>\u6838\u5fc3\u539f\u5219&#xff1a;\u6570\u636e\u7ed3\u6784\u7684\u9009\u62e9\u5fc5\u987b\u5339\u914d\u8bbf\u95ee\u6a21\u5f0f&#xff0c;\u9009\u9519\u4f1a\u5bfc\u81f4\u767e\u500d\u7ea7\u6027\u80fd\u635f\u8017&#xff1a;\n<ul>\n<li>\u9ad8\u9891\u968f\u673a\u8bbf\u95ee&#xff08;get\/set&#xff09;\u2192 \u9009 ArrayList&#xff1b;<\/li>\n<li>\u9ad8\u9891\u63d2\u5165 \/ \u5220\u9664&#xff08;\u5c24\u5176\u662f\u4e2d\u95f4\u4f4d\u7f6e&#xff09;\u2192 \u9009 LinkedList&#xff1b;<\/li>\n<li>\u65e0\u9700\u6392\u5e8f\u3001\u8ffd\u6c42\u6781\u81f4\u8bfb\u5199 \u2192 \u9009 HashMap&#xff1b;<\/li>\n<li>\u9700\u8981\u6309 Key \u6392\u5e8f \u2192 \u9009 TreeMap&#xff08;\u63a5\u53d7\u6027\u80fd\u7565\u964d&#xff09;\u3002<\/li>\n<\/ul>\n<\/li>\n<li>\u907f\u5751\u70b9&#xff1a;\u4e0d\u8981\u76f2\u76ee\u4f7f\u7528 LinkedList&#xff0c;90% \u7684\u4e1a\u52a1\u573a\u666f\u4e2d ArrayList \u66f4\u9ad8\u6548&#xff08;\u5373\u4f7f\u6709\u5c11\u91cf\u63d2\u5165 \/ \u5220\u9664&#xff09;&#xff1b;<\/li>\n<li>\u6269\u5c55\u63d0\u793a&#xff1a;\n<ul>\n<li>\u7ebf\u7a0b\u5b89\u5168\u573a\u666f&#xff1a;List \u9009 CopyOnWriteArrayList&#xff0c;Map \u9009 ConcurrentHashMap&#xff1b;<\/li>\n<li>\u56fa\u5b9a\u957f\u5ea6\u96c6\u5408&#xff1a;\u4f18\u5148\u7528\u6570\u7ec4&#xff08;\u6bd4 ArrayList \u66f4\u7701\u5185\u5b58&#xff09;\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>3 \u5faa\u73af\u4f18\u5316<\/h2>\n<h3>3.1 \u63d0\u53d6\u5faa\u73af\u5185\u4e0d\u53d8\u7684\u8ba1\u7b97<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u6bcf\u6b21\u5faa\u73af\u90fd\u8c03\u7528size(),\u91cd\u590d\u8ba1\u7b97<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u8c03\u7528size()<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u7f13\u5b58\u5faa\u73af\u6761\u4ef6\u503c ,\u53d6\u4e0d\u53d8\u90e8\u5206<\/span><br \/>\n<span class=\"token keyword\">int<\/span> size <span class=\"token operator\">&#061;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u7f13\u5b58size\u503c<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> size<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u5728\u5faa\u73af\u6761\u4ef6\u4e2d\u8c03\u7528\u65b9\u6cd5\u4f1a\u5bfc\u81f4\u6bcf\u6b21\u8fed\u4ee3\u90fd\u8fdb\u884c\u65b9\u6cd5\u8c03\u7528&#xff0c;\u5373\u4f7f\u65b9\u6cd5\u7ed3\u679c\u4e0d\u53d8\u3002\u7f13\u5b58\u7ed3\u679c\u53ef\u4ee5\u51cf\u5c11\u65b9\u6cd5\u8c03\u7528\u5f00\u9500<\/p>\n<h3>3.2 \u589e\u5f3afor\u5faa\u73af\u4e0e\u8fed\u4ee3\u5668<\/h3>\n<p><span class=\"token comment\">\/\/ \u589e\u5f3afor\u5faa\u73af&#xff08;\u5185\u90e8\u4f7f\u7528\u8fed\u4ee3\u5668&#xff09;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> item <span class=\"token operator\">:<\/span> list<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7b80\u6d01\u9ad8\u6548<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u9700\u8981\u5220\u9664\u5143\u7d20\u65f6\u4f7f\u7528\u8fed\u4ee3\u5668<\/span><br \/>\n<span class=\"token class-name\">Iterator<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> iterator <span class=\"token operator\">&#061;<\/span> list<span class=\"token punctuation\">.<\/span><span class=\"token function\">iterator<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>iterator<span class=\"token punctuation\">.<\/span><span class=\"token function\">hasNext<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">String<\/span> item <span class=\"token operator\">&#061;<\/span> iterator<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token function\">shouldRemove<\/span><span class=\"token punctuation\">(<\/span>item<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        iterator<span class=\"token punctuation\">.<\/span><span class=\"token function\">remove<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5b89\u5168\u7684\u5220\u9664\u64cd\u4f5c<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u589e\u5f3afor\u5faa\u73af&#xff1a;\u7f16\u8bd1\u5668\u81ea\u52a8\u8f6c\u6362\u4e3a\u8fed\u4ee3\u5668&#xff0c;\u7b80\u5316\u4ee3\u7801\u540c\u65f6\u4fdd\u6301\u6027\u80fd<\/p>\n<h3>3.3 \u4f7f\u7528System.arraycopy()\u590d\u5236\u6570\u7ec4<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u624b\u52a8\u5faa\u73af\u590d\u5236\u6570\u7ec4<\/span><br \/>\n<span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    dest<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> source<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9010\u4e2a\u5143\u7d20\u590d\u5236<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528System.arraycopy()<\/span><br \/>\njavaint<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1000<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> dest<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ArrayCopyOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u6570\u636e\u91cf&#xff1a;1000\u4e07\u6761&#xff08;\u653e\u5927\u6027\u80fd\u5dee\u5f02&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">int<\/span> ARRAY_SIZE <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10_000_000<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u521d\u59cb\u5316\u6e90\u6570\u7ec4&#xff08;\u586b\u5145\u6d4b\u8bd5\u6570\u636e&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>ARRAY_SIZE<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> ARRAY_SIZE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            source<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ 2. \u6d4b\u8bd51&#xff1a;\u624b\u52a8\u5faa\u73af\u590d\u5236\u6570\u7ec4&#xff08;\u4f4e\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> manualCopyTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testManualArrayCopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 3. \u6d4b\u8bd52&#xff1a;System.arraycopy()\u590d\u5236\u6570\u7ec4&#xff08;\u9ad8\u6548&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> systemCopyTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testSystemArrayCopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; \u6570\u7ec4\u590d\u5236\u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u624b\u52a8\u5faa\u73af\u590d\u5236\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> manualCopyTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;System.arraycopy()\u590d\u5236\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> systemCopyTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6027\u80fd\u63d0\u5347\u500d\u6570&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span><span class=\"token punctuation\">)<\/span> manualCopyTime <span class=\"token operator\">\/<\/span> systemCopyTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u500d&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u989d\u5916\u9a8c\u8bc1&#xff1a;Java 8&#043; Arrays.copyOf&#xff08;\u5e95\u5c42\u4e5f\u662fSystem.arraycopy&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> arraysCopyOfTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testArraysCopyOf<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Arrays.copyOf()\u590d\u5236\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> arraysCopyOfTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;\u624b\u52a8for\u5faa\u73af\u590d\u5236\u6570\u7ec4<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testManualArrayCopy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>ARRAY_SIZE<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9010\u4e2a\u5143\u7d20\u590d\u5236&#xff0c;Java\u5c42\u5faa\u73af\u5f00\u9500\u5927<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            dest<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> source<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1\u590d\u5236\u7ed3\u679c&#xff08;\u907f\u514dJIT\u4f18\u5316\u6389\u65e0\u64cd\u4f5c\u7684\u590d\u5236&#xff09;<\/span><br \/>\n        <span class=\"token function\">verifyCopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> dest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;System.arraycopy()\u590d\u5236\u6570\u7ec4&#xff08;native\u65b9\u6cd5&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testSystemArrayCopy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>ARRAY_SIZE<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u672c\u5730\u65b9\u6cd5\u590d\u5236&#xff0c;\u76f4\u63a5\u64cd\u4f5c\u5185\u5b58\u5757<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> dest<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1\u590d\u5236\u7ed3\u679c<\/span><br \/>\n        <span class=\"token function\">verifyCopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> dest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;Arrays.copyOf&#xff08;\u5e95\u5c42\u5c01\u88c5\u4e86System.arraycopy&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testArraysCopyOf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ Arrays.copyOf &#061; \u65b0\u5efa\u6570\u7ec4 &#043; System.arraycopy<\/span><br \/>\n        <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span>Arrays<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">copyOf<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1\u590d\u5236\u7ed3\u679c<\/span><br \/>\n        <span class=\"token function\">verifyCopy<\/span><span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">,<\/span> dest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u9a8c\u8bc1\u590d\u5236\u7ed3\u679c\u662f\u5426\u4e00\u81f4&#xff08;\u907f\u514dJIT\u4f18\u5316\u5f71\u54cd\u6d4b\u8bd5\u7ed3\u679c&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">verifyCopy<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> source<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> dest<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">!&#061;<\/span> dest<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">RuntimeException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u590d\u5236\u5931\u8d25&#xff1a;\u6570\u7ec4\u957f\u5ea6\u4e0d\u4e00\u81f4&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u968f\u673a\u9a8c\u8bc1\u4e00\u4e2a\u5143\u7d20&#xff08;\u65e0\u9700\u5168\u91cf\u9a8c\u8bc1&#xff0c;\u8282\u7701\u65f6\u95f4&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> randomIndex <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Math<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">random<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> source<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>source<span class=\"token punctuation\">[<\/span>randomIndex<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">!&#061;<\/span> dest<span class=\"token punctuation\">[<\/span>randomIndex<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">RuntimeException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u590d\u5236\u5931\u8d25&#xff1a;\u5143\u7d20\u503c\u4e0d\u4e00\u81f4&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u5dee\u5f02&#xff1a;\u624b\u52a8\u5faa\u73af\u662f Java \u5c42\u89e3\u91ca\u6267\u884c&#xff08;\u9010\u5143\u7d20\u8d4b\u503c&#xff09;&#xff0c;System.arraycopy() \u662f JVM \u672c\u5730\u65b9\u6cd5&#xff08;\u5185\u5b58\u5757\u590d\u5236&#xff09;&#xff0c;\u540e\u8005\u65e0\u5faa\u73af\u5f00\u9500&#xff0c;\u6027\u80fd\u5927\u5e45\u63d0\u5347&#xff1b;<\/li>\n<li>\u6700\u4f18\u5b9e\u8df5&#xff1a;\n<ul>\n<li>\u590d\u5236\u5df2\u6709\u6570\u7ec4&#xff1a;\u4f18\u5148\u7528 System.arraycopy()&#xff08;\u7075\u6d3b\u63a7\u5236\u8d77\u59cb\u7d22\u5f15\u548c\u957f\u5ea6&#xff09;&#xff1b;<\/li>\n<li>\u65b0\u5efa\u6570\u7ec4\u5e76\u590d\u5236&#xff1a;\u7528 Arrays.copyOf()&#xff08;\u4ee3\u7801\u66f4\u7b80\u6d01&#xff0c;\u5e95\u5c42\u4e5f\u662f System.arraycopy&#xff09;&#xff1b;<\/li>\n<li>\u7edd\u5bf9\u907f\u514d\u624b\u52a8\u5faa\u73af\u590d\u5236\u6570\u7ec4&#xff08;\u9664\u975e\u6709\u7279\u6b8a\u7684\u5143\u7d20\u5904\u7406\u903b\u8f91&#xff09;&#xff1b;<\/li>\n<\/ul>\n<\/li>\n<li>\u6269\u5c55\u63d0\u793a&#xff1a;\n<ul>\n<li>System.arraycopy()\u652f\u6301\u6570\u7ec4\u90e8\u5206\u590d\u5236&#xff08;\u6bd4\u5982\u53ea\u590d\u5236\u524d 100 \u4e2a\u5143\u7d20&#xff09;&#xff0c;\u7075\u6d3b\u6027\u66f4\u9ad8&#xff1b;<\/li>\n<li>\u8be5\u65b9\u6cd5\u662f\u4e0d\u5b89\u5168\u7684&#xff08;\u76ee\u6807\u6570\u7ec4\u5bb9\u91cf\u4e0d\u8db3\u4f1a\u629bArrayIndexOutOfBoundsException&#xff09;&#xff0c;\u4f7f\u7528\u524d\u9700\u6821\u9a8c\u6570\u7ec4\u957f\u5ea6\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>4. \u5bf9\u8c61\u521b\u5efa\u4f18\u5316<\/h2>\n<h3>4.1 \u907f\u514d\u4e0d\u5fc5\u8981\u7684\u5bf9\u8c61\u521b\u5efa<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u8fc7\u5ea6\u4f7f\u7528\u5305\u88c5\u7c7b\u578b,\u4e0d\u5fc5\u8981\u7684\u5305\u88c5\u7c7b<\/span><br \/>\n<span class=\"token class-name\">Long<\/span> sum <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0L<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">long<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">.<\/span>MAX_VALUE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    sum <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u6bcf\u6b21\u90fd\u4f1a\u521b\u5efaLong\u5bf9\u8c61,\u81ea\u52a8\u88c5\u7bb1\u62c6\u7bb1<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528\u57fa\u672c\u6570\u636e\u7c7b\u578b&#xff0c;\u4f7f\u7528\u57fa\u672c\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">long<\/span> sum <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0L<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u4f7f\u7528\u57fa\u672c\u7c7b\u578b<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">long<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">.<\/span>MAX_VALUE<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    sum <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u65e0\u88c5\u7bb1\u62c6\u7bb1\u5f00\u9500<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u4ee3\u7801\u6848\u4f8b<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">WrapperTypeOptimize<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u5faa\u73af\u6b21\u6570&#xff1a;Integer.MAX_VALUE&#xff08;\u7ea621\u4ebf\u6b21&#xff0c;\u653e\u5927\u88c5\u7bb1\u62c6\u7bb1\u5f00\u9500&#xff09;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6ce8&#xff1a;\u5b8c\u6574\u5faa\u73af21\u4ebf\u6b21\u8017\u65f6\u8fc7\u4e45&#xff0c;\u8fd9\u91cc\u75281000\u4e07\u6b21\u6f14\u793a&#xff08;\u53ef\u81ea\u884c\u8c03\u6574&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">long<\/span> LOOP_COUNT <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">10_000_000L<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u6d4b\u8bd5&#xff1a;\u4f7f\u7528\u5305\u88c5\u7c7b\u578b Long&#xff08;\u4f4e\u6548&#xff0c;\u9891\u7e41\u88c5\u7bb1\u62c6\u7bb1&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> wrapperTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testWrapperType<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ 2. \u6d4b\u8bd5&#xff1a;\u4f7f\u7528\u57fa\u672c\u7c7b\u578b long&#xff08;\u9ad8\u6548&#xff0c;\u65e0\u88c5\u7bb1\u62c6\u7bb1&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> primitiveTime <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">testPrimitiveType<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#061;&#061;&#061;&#061;&#061; \u5305\u88c5\u7c7b\u578b vs \u57fa\u672c\u7c7b\u578b \u6027\u80fd\u5bf9\u6bd4 &#061;&#061;&#061;&#061;&#061;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f7f\u7528 Long \u5305\u88c5\u7c7b\u578b\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> wrapperTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f7f\u7528 long \u57fa\u672c\u7c7b\u578b\u8017\u65f6&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> primitiveTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u6beb\u79d2&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6027\u80fd\u5dee\u8ddd\u500d\u6570&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span><span class=\"token punctuation\">)<\/span> wrapperTime <span class=\"token operator\">\/<\/span> primitiveTime <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034; \u500d&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;\u4f7f\u7528 Long \u5305\u88c5\u7c7b\u578b&#xff08;\u9891\u7e41\u88c5\u7bb1\u62c6\u7bb1&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testWrapperType<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">Long<\/span> sum <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0L<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5305\u88c5\u7c7b\u578b\u521d\u59cb\u503c<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">long<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ sum &#043;&#061; i \u7b49\u4ef7\u4e8e&#xff1a;sum &#061; Long.valueOf(sum.longValue() &#043; i)<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u7684 Long \u5bf9\u8c61&#xff0c;\u89e6\u53d1\u88c5\u7bb1\u62c6\u7bb1<\/span><br \/>\n            sum <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1\u7ed3\u679c&#xff08;\u907f\u514dJIT\u4f18\u5316\u6389\u65e0\u64cd\u4f5c\u7684\u8ba1\u7b97&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;Long \u8ba1\u7b97\u7ed3\u679c&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> sum<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u6d4b\u8bd5&#xff1a;\u4f7f\u7528 long \u57fa\u672c\u7c7b\u578b&#xff08;\u65e0\u88c5\u7bb1\u62c6\u7bb1&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">testPrimitiveType<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> sum <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0L<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u57fa\u672c\u7c7b\u578b\u521d\u59cb\u503c<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> startTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">long<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> LOOP_COUNT<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u76f4\u63a5\u6570\u503c\u8fd0\u7b97&#xff0c;\u65e0\u4efb\u4f55\u989d\u5916\u5f00\u9500<\/span><br \/>\n            sum <span class=\"token operator\">&#043;&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">long<\/span> endTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u9a8c\u8bc1\u7ed3\u679c<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;long \u8ba1\u7b97\u7ed3\u679c&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> sum<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> endTime <span class=\"token operator\">&#8211;<\/span> startTime<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<ul>\n<li>\u6838\u5fc3\u5dee\u5f02&#xff1a;\u5305\u88c5\u7c7b\u578b\u8fd0\u7b97\u65f6\u4f1a\u89e6\u53d1\u9891\u7e41\u7684\u300c\u81ea\u52a8\u88c5\u7bb1 \/ \u62c6\u7bb1\u300d&#xff0c;\u521b\u5efa\u5927\u91cf\u4e34\u65f6\u5bf9\u8c61&#xff0c;\u800c\u57fa\u672c\u7c7b\u578b\u662f\u7eaf\u6570\u503c\u8fd0\u7b97&#xff0c;\u65e0\u989d\u5916\u5f00\u9500&#xff1b;<\/li>\n<li>\u6700\u4f18\u5b9e\u8df5&#xff1a;\n<ul>\n<li>\u7eaf\u6570\u503c\u8ba1\u7b97\u573a\u666f&#xff08;\u5982\u7d2f\u52a0\u3001\u7edf\u8ba1\u3001\u6570\u5b66\u8fd0\u7b97&#xff09;&#xff1a;\u5fc5\u987b\u4f7f\u7528\u57fa\u672c\u7c7b\u578b&#xff08;long\/int\/double \u7b49&#xff09;&#xff1b;<\/li>\n<li>\u4ec5\u5728\u9700\u8981 \u201c\u5bf9\u8c61\u7279\u6027\u201d \u65f6\u4f7f\u7528\u5305\u88c5\u7c7b\u578b&#xff08;\u5982\u96c6\u5408\u5b58\u50a8&#xff1a;List\u3001\u6cdb\u578b\u9650\u5236\u3001null \u503c\u8868\u793a&#xff09;&#xff1b;<\/li>\n<\/ul>\n<\/li>\n<li>\u6269\u5c55\u63d0\u793a&#xff1a;\n<ul>\n<li>JDK5&#043; \u7684\u81ea\u52a8\u88c5\u7bb1 \/ \u62c6\u7bb1\u662f \u201c\u8bed\u6cd5\u7cd6\u201d&#xff0c;\u65b9\u4fbf\u5f00\u53d1\u4f46\u4f1a\u9690\u85cf\u6027\u80fd\u635f\u8017&#xff0c;\u9ad8\u9891\u5faa\u73af\u4e2d\u9700\u8b66\u60d5&#xff1b;<\/li>\n<li>\u5305\u88c5\u7c7b\u578b\u6709\u7f13\u5b58\u6c60&#xff08;\u5982 Long \u7f13\u5b58 -128~127&#xff09;&#xff0c;\u4f46\u8d85\u51fa\u8303\u56f4\u540e\u4ecd\u4f1a\u521b\u5efa\u65b0\u5bf9\u8c61&#xff0c;\u65e0\u6cd5\u89e3\u51b3\u9ad8\u9891\u5faa\u73af\u7684\u6027\u80fd\u95ee\u9898\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>4.2 \u91cd\u7528\u91cd\u91cf\u7ea7\u5bf9\u8c61<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u91cd\u590d\u521b\u5efaSimpleDateFormat<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">SimpleDateFormat<\/span> sdf <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> sdf<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>date<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6bcf\u6b21\u8c03\u7528\u90fd\u521b\u5efa\u65b0\u5bf9\u8c61<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528\u9759\u6001\u5e38\u91cf\u6216ThreadLocal<\/span><br \/>\n<span class=\"token comment\">\/\/ \u65b9\u68481&#xff1a;\u9759\u6001\u5e38\u91cf&#xff08;\u5355\u7ebf\u7a0b\u5b89\u5168&#xff09;<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span> SDF <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u65b9\u68482&#xff1a;ThreadLocal&#xff08;\u591a\u7ebf\u7a0b\u5b89\u5168&#xff09;<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ThreadLocal<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> SDF_TL <span class=\"token operator\">&#061;<\/span><br \/>\n    <span class=\"token class-name\">ThreadLocal<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">withInitial<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDateOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> SDF<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>date<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u6848\u4f8b\u4ee3\u7801<\/h4>\n<p>    <span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u6bcf\u6b21\u8c03\u7528\u65b9\u6cd5\u90fd\u521b\u5efa\u65b0\u7684SimpleDateFormat\u5bf9\u8c61&#xff0c;\u5b58\u5728\u4e24\u5927\u95ee\u9898<\/span><br \/>\n    <span class=\"token comment\">\/\/ 1. \u6027\u80fd\u635f\u8017&#xff1a;\u9891\u7e41\u521b\u5efa\/\u9500\u6bc1\u5bf9\u8c61&#xff0c;\u589e\u52a0JVM\u5185\u5b58\u5206\u914d\u548cGC\u538b\u529b<\/span><br \/>\n    <span class=\"token comment\">\/\/ 2. \u82e5\u6539\u4e3a\u5168\u5c40\u5171\u4eab\u4e14\u591a\u7ebf\u7a0b\u8c03\u7528&#xff0c;\u4f1a\u51fa\u73b0\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898&#xff08;SimpleDateFormat\u5185\u90e8Calendar\u5bf9\u8c61\u5171\u4eab&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6bcf\u6b21\u8c03\u7528\u90fd\u65b0\u5efa\u5bf9\u8c61&#xff0c;10000\u6b21\u8c03\u7528\u5c31\u521b\u5efa10000\u4e2aSimpleDateFormat\u5b9e\u4f8b<\/span><br \/>\n        <span class=\"token class-name\">SimpleDateFormat<\/span> sdf <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> sdf<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>date<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5355\u6b21\u8c03\u7528\u770b\u4f3c\u6ca1\u95ee\u9898&#xff0c;\u4f46\u9ad8\u9891\u8c03\u7528\u6027\u80fd\u5dee<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u68481&#xff1a;\u9759\u6001\u5e38\u91cf&#xff08;\u4ec5\u9002\u7528\u4e8e\u5355\u7ebf\u7a0b\/\u65e0\u5e76\u53d1\u573a\u666f&#xff09;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4f18\u70b9&#xff1a;\u5168\u5c40\u590d\u7528\u4e00\u4e2a\u5bf9\u8c61&#xff0c;\u6d88\u9664\u91cd\u590d\u521b\u5efa\u5f00\u9500<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7f3a\u70b9&#xff1a;\u591a\u7ebf\u7a0b\u73af\u5883\u4e0b\u4f1a\u51fa\u73b0\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898&#xff08;\u5982\u65e5\u671f\u89e3\u6790\u9519\u8bef\u3001\u6570\u636e\u9519\u4e71&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span> SDF_SINGLE_THREAD <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u68482&#xff1a;ThreadLocal&#xff08;\u63a8\u8350&#xff0c;\u9002\u7528\u4e8e\u591a\u7ebf\u7a0b\/\u9ad8\u5e76\u53d1\u573a\u666f&#xff09;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6838\u5fc3\u539f\u7406&#xff1a;\u6bcf\u4e2a\u7ebf\u7a0b\u62e5\u6709\u72ec\u7acb\u7684SimpleDateFormat\u5b9e\u4f8b&#xff0c;\u907f\u514d\u7ebf\u7a0b\u95f4\u5171\u4eab<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4f18\u70b9&#xff1a;\u65e2\u590d\u7528\u5bf9\u8c61&#xff08;\u6bcf\u4e2a\u7ebf\u7a0b\u4e00\u4e2a&#xff09;&#xff0c;\u53c8\u4fdd\u8bc1\u7ebf\u7a0b\u5b89\u5168&#xff1b;\u6027\u80fd\u63a5\u8fd1\u9759\u6001\u5e38\u91cf<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6ce8\u610f&#xff1a;JDK8&#043;\u63a8\u8350\u4f7f\u7528withInitial\u65b9\u5f0f\u521d\u59cb\u5316&#xff0c;\u61d2\u52a0\u8f7d\u4e14\u4ee3\u7801\u66f4\u7b80\u6d01<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ThreadLocal<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> SDF_THREAD_LOCAL <span class=\"token operator\">&#061;<\/span><br \/>\n            <span class=\"token class-name\">ThreadLocal<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">withInitial<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SimpleDateFormat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u4f18\u5316\u65b9\u68481\u7684\u8c03\u7528\u65b9\u6cd5&#xff08;\u5355\u7ebf\u7a0b\u4e13\u7528&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDateSingleThread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>date <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">IllegalArgumentException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u65e5\u671f\u53c2\u6570\u4e0d\u80fd\u4e3a\u7a7a&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> SDF_SINGLE_THREAD<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>date<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u4f18\u5316\u65b9\u68482\u7684\u8c03\u7528\u65b9\u6cd5&#xff08;\u591a\u7ebf\u7a0b\u5b89\u5168&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDateMultiThread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>date <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">IllegalArgumentException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u65e5\u671f\u53c2\u6570\u4e0d\u80fd\u4e3a\u7a7a&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4ece\u5f53\u524d\u7ebf\u7a0b\u7684ThreadLocal\u4e2d\u83b7\u53d6\u4e13\u5c5e\u7684SimpleDateFormat\u5b9e\u4f8b<\/span><br \/>\n        <span class=\"token class-name\">SimpleDateFormat<\/span> sdf <span class=\"token operator\">&#061;<\/span> SDF_THREAD_LOCAL<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> sdf<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>date<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u975e\u5fc5\u987b&#xff1a;\u82e5\u7ebf\u7a0b\u590d\u7528&#xff08;\u5982\u7ebf\u7a0b\u6c60&#xff09;&#xff0c;\u53ef\u79fb\u9664\u5f53\u524d\u7ebf\u7a0b\u7684\u5b9e\u4f8b\u4ee5\u91ca\u653e\u5185\u5b58<\/span><br \/>\n            <span class=\"token comment\">\/\/ SDF_THREAD_LOCAL.remove();<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u8fdb\u9636\u4f18\u5316&#xff1a;JDK8&#043; \u63a8\u8350\u4f7f\u7528 java.time \u5305&#xff08;\u7ebf\u7a0b\u5b89\u5168\u3001API\u66f4\u53cb\u597d&#xff09;<\/span><br \/>\n    <span class=\"token comment\">\/\/ DateTimeFormatter \u662f\u4e0d\u53ef\u53d8\u5bf9\u8c61&#xff0c;\u5929\u7136\u7ebf\u7a0b\u5b89\u5168&#xff0c;\u65e0\u9700ThreadLocal\/\u9759\u6001\u5e38\u91cf<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">.<\/span>format<span class=\"token punctuation\">.<\/span><\/span>DateTimeFormatter<\/span> DATE_FORMATTER <span class=\"token operator\">&#061;<\/span><br \/>\n            <span class=\"token class-name\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">.<\/span>format<span class=\"token punctuation\">.<\/span><\/span>DateTimeFormatter<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">ofPattern<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;yyyy-MM-dd&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">formatDateJdk8<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Date<\/span> date<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>date <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">throw<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">IllegalArgumentException<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u65e5\u671f\u53c2\u6570\u4e0d\u80fd\u4e3a\u7a7a&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5c06\u65e7Date\u8f6c\u6362\u4e3aLocalDate&#xff0c;\u4f7f\u7528\u65b0API\u683c\u5f0f\u5316<\/span><br \/>\n        <span class=\"token class-name\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">.<\/span><\/span>LocalDate<\/span> localDate <span class=\"token operator\">&#061;<\/span> date<span class=\"token punctuation\">.<\/span><span class=\"token function\">toInstant<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">atZone<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">.<\/span><\/span>ZoneId<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">systemDefault<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><br \/>\n                <span class=\"token punctuation\">.<\/span><span class=\"token function\">toLocalDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> localDate<span class=\"token punctuation\">.<\/span><span class=\"token function\">format<\/span><span class=\"token punctuation\">(<\/span>DATE_FORMATTER<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u6d4b\u8bd5\u65b9\u6cd5&#xff08;\u6a21\u62df\u591a\u7ebf\u7a0b\u8c03\u7528&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">DateFormatOptimization<\/span> demo <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">DateFormatOptimization<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6a21\u62df10\u4e2a\u7ebf\u7a0b\u5e76\u53d1\u8c03\u7528<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token comment\">\/\/ \u6bcf\u4e2a\u7ebf\u7a0b\u683c\u5f0f\u5316100\u6b21\u968f\u673a\u65e5\u671f<\/span><br \/>\n                <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token keyword\">long<\/span> randomTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">ThreadLocalRandom<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">current<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">nextLong<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token class-name\">Date<\/span> randomDate <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Date<\/span><span class=\"token punctuation\">(<\/span>randomTime<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token comment\">\/\/ \u63a8\u8350\u4f7f\u7528JDK8&#043;\u7684\u5b89\u5168\u65b9\u6848<\/span><br \/>\n                    <span class=\"token class-name\">String<\/span> result <span class=\"token operator\">&#061;<\/span> demo<span class=\"token punctuation\">.<\/span><span class=\"token function\">formatDateJdk8<\/span><span class=\"token punctuation\">(<\/span>randomDate<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">printf<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u7ebf\u7a0b[%s] \u683c\u5f0f\u5316\u7ed3\u679c&#xff1a;%s%n&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentThread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">start<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;SimpleDateFormat\u7b49\u91cd\u91cf\u7ea7\u5bf9\u8c61\u7684\u521b\u5efa\u6210\u672c\u8f83\u9ad8&#xff0c;\u4e14\u4e0d\u662f\u7ebf\u7a0b\u5b89\u5168\u7684\u3002\u901a\u8fc7\u91cd\u7528\u5bf9\u8c61\u53ef\u4ee5\u51cf\u5c11\u521b\u5efa\u5f00\u9500\u548cGC\u538b\u529b<\/p>\n<h2>5 \u8d44\u6e90\u7ba1\u7406\u4f18\u5316<\/h2>\n<h3>5.1 \u4f7f\u7528try-with-resources<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u4f20\u7edf\u65b9\u5f0f<\/span><br \/>\n<span class=\"token class-name\">BufferedReader<\/span> br <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    br <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">BufferedReader<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">FileReader<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5904\u7406\u6587\u4ef6<\/span><br \/>\n<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>br <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            br<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">IOException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u5904\u7406\u5f02\u5e38<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;try-with-resources (Java 7&#043;) &#8211; \u81ea\u52a8\u8d44\u6e90\u7ba1\u7406\u8bed\u6cd5\u7cd6<\/span><br \/>\n<span class=\"token comment\">\/\/ \u6838\u5fc3\u539f\u7406&#xff1a;<\/span><br \/>\n<span class=\"token comment\">\/\/ 1. \u62ec\u53f7\u5185\u58f0\u660e\u7684\u8d44\u6e90\u5fc5\u987b\u5b9e\u73b0 AutoCloseable \u63a5\u53e3&#xff08;\u6240\u6709IO\u6d41\u90fd\u5df2\u5b9e\u73b0&#xff09;<\/span><br \/>\n<span class=\"token comment\">\/\/ 2. JVM\u4f1a\u5728try\u5757\u6267\u884c\u5b8c\u6bd5&#xff08;\u6b63\u5e38\/\u5f02\u5e38\u7ed3\u675f&#xff09;\u540e&#xff0c;\u81ea\u52a8\u8c03\u7528\u8d44\u6e90\u7684close()\u65b9\u6cd5<\/span><br \/>\n<span class=\"token comment\">\/\/ 3. \u5e95\u5c42\u4f1a\u81ea\u52a8\u751f\u6210\u7c7b\u4f3c\u4f20\u7edf\u65b9\u5f0f\u7684finally\u5757&#xff0c;\u4f46\u4ee3\u7801\u66f4\u7b80\u6d01&#xff0c;\u4e14\u80fd\u6b63\u786e\u5904\u7406\u591a\u4e2a\u8d44\u6e90\u7684\u5173\u95ed\u987a\u5e8f<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">BufferedReader<\/span> br <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">BufferedReader<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">FileReader<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;file.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u65e0\u9700\u624b\u52a8\u5173\u95ed\u8d44\u6e90&#xff1a;JVM\u4f1a\u81ea\u52a8\u8c03\u7528brAuto.close()&#xff0c;\u4e14\u5f02\u5e38\u5904\u7406\u66f4\u4f18\u96c5<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;try-with-resources&#xff1a;\u81ea\u52a8\u8c03\u7528\u8d44\u6e90\u7684close()\u65b9\u6cd5&#xff0c;\u786e\u4fdd\u8d44\u6e90\u91ca\u653e\u907f\u514d\u5185\u5b58\u6cc4\u6f0f<\/p>\n<h3>5.2 \u672a\u4f7f\u7528\u7f13\u51b2I\/O<\/h3>\n<p>\u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u9010\u5b57\u8282\u8bfb\u53d6\u5927\u6587\u4ef6&#xff0c;\u6027\u80fd\u6781\u4f4e<br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">FileInputStream<\/span> fis <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">FileInputStream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;largefile.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">int<\/span> data<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token comment\">\/\/ read()\u65b9\u6cd5\u6bcf\u6b21\u4ec5\u4ece\u78c1\u76d8\u8bfb\u53d61\u4e2a\u5b57\u8282&#xff0c;\u8fd4\u56de\u5b57\u8282\u7684ASCII\u503c&#xff08;0-255&#xff09;&#xff0c;\u8bfb\u5230\u672b\u5c3e\u8fd4\u56de-1<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u95ee\u9898&#xff1a;\u5927\u6587\u4ef6\u573a\u666f\u4e0b\u4f1a\u4ea7\u751f\u5927\u91cf\u78c1\u76d8IO\u64cd\u4f5c&#xff08;\u78c1\u76d8\u5bfb\u9053&#043;\u8bfb\u53d6&#xff09;&#xff0c;IO\u6b21\u6570\u4e0e\u6587\u4ef6\u5927\u5c0f\u6210\u6b63\u6bd4<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u78c1\u76d8IO\u662f\u6162\u901f\u64cd\u4f5c&#xff0c;\u9891\u7e41\u7684\u5355\u6b21\u5b57\u8282\u8bfb\u53d6\u4f1a\u5bfc\u81f4\u4e25\u91cd\u7684\u6027\u80fd\u74f6\u9888 <\/span><br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>data <span class=\"token operator\">&#061;<\/span> fis<span class=\"token punctuation\">.<\/span><span class=\"token function\">read<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  <span class=\"token comment\">\/\/ \u6bcf\u6b21\u8bfb\u53d61\u4e2a\u5b57\u8282       <\/span><br \/>\n <span class=\"token comment\">\/\/ \u5904\u7406data    <\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n <span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528\u5e26\u7f13\u51b2\u533a\u7684\u8f93\u5165\u6d41\u6279\u91cf\u8bfb\u53d6&#xff0c;\u5927\u5e45\u63d0\u5347\u8bfb\u53d6\u6548\u7387<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">BufferedInputStream<\/span> bis <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">BufferedInputStream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">FileInputStream<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;largefile.txt&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u521b\u5efa8KB&#xff08;8192\u5b57\u8282&#xff09;\u7684\u5b57\u8282\u7f13\u51b2\u533a&#xff1a;\u4e00\u6b21\u8bfb\u53d6\u591a\u5b57\u8282\u5230\u5185\u5b58&#xff0c;\u51cf\u5c11\u78c1\u76d8IO\u6b21\u6570<\/span><br \/>\n  <span class=\"token comment\">\/\/ 8KB\u662fJDK\u9ed8\u8ba4\u7684\u7f13\u51b2\u533a\u5927\u5c0f&#xff0c;\u4e5f\u662f\u5e73\u8861\u5185\u5b58\u5360\u7528\u548cIO\u6548\u7387\u7684\u6700\u4f18\u503c\u4e4b\u4e00   <\/span><br \/>\n<span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> buffer <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">8192<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ 8K\u7f13\u51b2\u533a   <\/span><br \/>\n<span class=\"token keyword\">int<\/span> bytesRead<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u8bb0\u5f55\u6bcf\u6b21\u5b9e\u9645\u8bfb\u53d6\u7684\u5b57\u8282\u6570&#xff08;\u6700\u540e\u4e00\u6b21\u53ef\u80fd\u5c0f\u4e8e\u7f13\u51b2\u533a\u5927\u5c0f&#xff09;<\/span><br \/>\n  <span class=\"token comment\">\/\/ read(buffer)&#xff1a;\u4e00\u6b21\u6027\u4ece\u7f13\u51b2\u533a\u8bfb\u53d6\u6700\u591a8192\u5b57\u8282\u5230\u5185\u5b58\u6570\u7ec4\u4e2d<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u5e95\u5c42\u903b\u8f91&#xff1a;BufferedInputStream\u4f1a\u5148\u628a\u78c1\u76d8\u6570\u636e\u6279\u91cf\u8bfb\u53d6\u5230\u5176\u5185\u90e8\u7f13\u51b2\u533a<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u540e\u7eedread\u64cd\u4f5c\u4f18\u5148\u4ece\u5185\u5b58\u7f13\u51b2\u533a\u83b7\u53d6\u6570\u636e&#xff0c;\u7f13\u51b2\u533a\u7a7a\u4e86\u624d\u4f1a\u89e6\u53d1\u4e00\u6b21\u78c1\u76d8IO\u586b\u5145\u7f13\u51b2\u533a<\/span><br \/>\n  <span class=\"token comment\">\/\/ \u8fd4\u56de\u503c&#xff1a;\u5b9e\u9645\u8bfb\u53d6\u7684\u5b57\u8282\u6570&#xff0c;\u8bfb\u5230\u6587\u4ef6\u672b\u5c3e\u8fd4\u56de-1  <\/span><br \/>\n<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>bytesRead <span class=\"token operator\">&#061;<\/span> bis<span class=\"token punctuation\">.<\/span><span class=\"token function\">read<\/span><span class=\"token punctuation\">(<\/span>buffer<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!&#061;<\/span> <span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n     <span class=\"token comment\">\/\/ \u5904\u7406buffer <\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u901a\u8fc7\u5f15\u5165\u5185\u5b58\u7f13\u51b2\u533a&#xff08;\u9ed8\u8ba4 8KB&#xff09;&#xff0c;\u5c06\u9010\u5b57\u8282\u8bfb\u53d6\u65f6\u7684\u9ad8\u9891\u6b21\u78c1\u76d8 IO \u64cd\u4f5c&#xff0c;\u5408\u5e76\u4e3a\u4ee5\u7f13\u51b2\u533a\u5927\u5c0f\u4e3a\u5355\u4f4d\u7684\u4f4e\u9891\u6b21\u6279\u91cf\u8bfb\u53d6&#xff0c;\u5927\u5e45\u51cf\u5c11\u6162\u901f\u7684\u78c1\u76d8 IO \u6b21\u6570&#xff0c;\u4ece\u800c\u63d0\u5347\u5927\u6587\u4ef6\u8bfb\u53d6\u6548\u7387\u3002<\/p>\n<h2>6. \u5e76\u53d1\u4f18\u5316<\/h2>\n<h3>6.1 \u4f7f\u7528\u5c40\u90e8\u53d8\u91cf<\/h3>\n<p><span class=\"token comment\">\/\/ \u5c40\u90e8\u53d8\u91cf\u5b58\u50a8\u5728\u6808\u4e0a&#xff0c;\u8bbf\u95ee\u901f\u5ea6\u66f4\u5feb<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">process<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> items<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> size <span class=\"token operator\">&#061;<\/span> items<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5c40\u90e8\u53d8\u91cf<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4f7f\u7528size\u800c\u4e0d\u662f\u53cd\u590d\u8c03\u7528items.size()<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u5c40\u90e8\u53d8\u91cf\u5728\u6808\u4e0a\u5206\u914d&#xff0c;\u65b9\u6cd5\u7ed3\u675f\u65f6\u81ea\u52a8\u56de\u6536&#xff0c;\u6ca1\u6709GC\u5f00\u9500\u3002\u800c\u6210\u5458\u53d8\u91cf\u5728\u5806\u4e0a\u5206\u914d&#xff0c;\u8bbf\u95ee\u65f6\u9700\u8981\u989d\u5916\u7684\u5bfb\u5740\u64cd\u4f5c<\/p>\n<h3>6.2 \u9009\u62e9\u5408\u9002\u7684\u5e76\u53d1\u5bb9\u5668<\/h3>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Queue<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Set<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>concurrent<span class=\"token punctuation\">.<\/span><\/span><span class=\"token operator\">*<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/**<br \/>\n * \u5e76\u53d1\u5bb9\u5668\u9009\u578b\u4e0e\u4f7f\u7528\u793a\u4f8b<br \/>\n * \u6838\u5fc3\u539f\u5219&#xff1a;\u6839\u636e&#034;\u8bfb\u5199\u9891\u7387\u3001\u662f\u5426\u6709\u5e8f\u3001\u662f\u5426\u963b\u585e&#034;\u9009\u62e9\u5339\u914d\u7684\u5e76\u53d1\u5bb9\u5668<br \/>\n *\/<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ConcurrentContainerSelection<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">InterruptedException<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f1&#xff1a;\u9ad8\u9891\u8bfb\u3001\u4f4e\u9891\u5199&#xff08;\u5982\u914d\u7f6e\u5217\u8868\u3001\u57fa\u7840\u6570\u636e\u7f13\u5b58&#xff09; &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u274c \u9519\u8bef&#xff1a;ArrayList\u975e\u7ebf\u7a0b\u5b89\u5168&#xff0c;\u5e76\u53d1\u8bfb\u5199\u4f1a\u6570\u636e\u9519\u4e71<\/span><br \/>\n        <span class=\"token comment\">\/\/ List&lt;String&gt; unsafeList &#061; new ArrayList&lt;&gt;();<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;CopyOnWriteArrayList&#xff08;\u5199\u65f6\u590d\u5236&#xff09;&#xff0c;\u8bfb\u65e0\u9501&#xff0c;\u5199\u65f6\u590d\u5236\u65b0\u6570\u7ec4&#xff08;\u9002\u5408\u8bfb\u591a\u5199\u5c11&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Set<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> safeSet <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">CopyOnWriteArraySet<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ Set\u7248\u540c\u7406<\/span><br \/>\n        safeSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;config1&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u8bfb\u64cd\u4f5c\u65e0\u9501&#xff0c;\u6027\u80fd\u6781\u9ad8<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> s <span class=\"token operator\">:<\/span> safeSet<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8bfb\u53d6\u914d\u7f6e&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f2&#xff1a;\u9ad8\u9891\u5e76\u53d1\u8bfb\u5199\u7684Map&#xff08;\u5982\u7f13\u5b58\u3001\u4e1a\u52a1\u6570\u636e\u5b58\u50a8&#xff09; &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u274c \u9519\u8bef&#xff1a;HashMap\u975e\u7ebf\u7a0b\u5b89\u5168&#xff0c;\u5e76\u53d1PUT\/GET\u4f1a\u5bfc\u81f4\u6b7b\u5faa\u73af\/\u6570\u636e\u4e22\u5931<\/span><br \/>\n        <span class=\"token comment\">\/\/ Map&lt;String, Integer&gt; unsafeMap &#061; new HashMap&lt;&gt;();<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u2705 \u6b63\u786e&#xff1a;ConcurrentHashMap&#xff08;JDK1.8&#043; \u7528CAS&#043;Synchronized\u66ff\u4ee3\u5206\u6bb5\u9501&#xff0c;\u9ad8\u5e76\u53d1\u6027\u80fd\u6700\u4f18&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> concurrentMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ConcurrentHashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5e76\u53d1PUT&#xff1a;\u652f\u6301\u9ad8\u5e76\u53d1&#xff0c;\u65e0\u9700\u624b\u52a8\u52a0\u9501<\/span><br \/>\n        concurrentMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;user1&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1001<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5e76\u53d1GET&#xff1a;\u65e0\u9501&#xff0c;\u6027\u80fd\u63a5\u8fd1\u666e\u901aHashMap<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u83b7\u53d6\u7528\u6237ID&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> concurrentMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;user1&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f3&#xff1a;\u9700\u8981\u6709\u5e8f\u7684\u5e76\u53d1Map\/Set &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u2705 ConcurrentSkipListMap&#xff1a;\u6309Key\u81ea\u7136\u6392\u5e8f&#xff0c;\u9ad8\u5e76\u53d1\u6709\u5e8fMap&#xff08;\u66ff\u4ee3\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684TreeMap&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> sortedConcurrentMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ConcurrentSkipListMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        sortedConcurrentMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;b&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        sortedConcurrentMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;a&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u904d\u5386\u7ed3\u679c\u4f1a\u6309Key\u6392\u5e8f&#xff1a;a\u2192b<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Map<span class=\"token punctuation\">.<\/span>Entry<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> entry <span class=\"token operator\">:<\/span> sortedConcurrentMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">entrySet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6709\u5e8f\u952e\u503c\u5bf9&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getKey<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> entry<span class=\"token punctuation\">.<\/span><span class=\"token function\">getValue<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061; \u573a\u666f4&#xff1a;\u751f\u4ea7-\u6d88\u8d39\u6a21\u578b&#xff08;\u961f\u5217&#xff09; &#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;&#061;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u573a\u666f4.1&#xff1a;\u6709\u754c\u961f\u5217&#xff08;\u63a7\u5236\u751f\u4ea7\u901f\u5ea6&#xff0c;\u907f\u514d\u5185\u5b58\u6ea2\u51fa&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Queue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> boundedQueue <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayBlockingQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5bb9\u91cf100<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u573a\u666f4.2&#xff1a;\u65e0\u754c\u961f\u5217&#xff08;\u9002\u5408\u5f02\u6b65\u4efb\u52a1\u5904\u7406&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Queue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> unboundedQueue <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">LinkedBlockingQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u573a\u666f4.3&#xff1a;\u4f18\u5148\u7ea7\u5e76\u53d1\u961f\u5217&#xff08;\u6309\u5143\u7d20\u4f18\u5148\u7ea7\u6d88\u8d39&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">Queue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> priorityQueue <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PriorityBlockingQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        priorityQueue<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        priorityQueue<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u4f18\u5148\u7ea7\u961f\u5217\u53d6\u51fa&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> priorityQueue<span class=\"token punctuation\">.<\/span><span class=\"token function\">take<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u8f93\u51fa1&#xff08;\u4f18\u5148\u53d6\u6700\u5c0f\u503c&#xff09;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u573a\u666f4.4&#xff1a;\u5ef6\u8fdf\u961f\u5217&#xff08;\u5b9a\u65f6\u4efb\u52a1&#xff0c;\u5982\u8ba2\u5355\u8d85\u65f6\u5173\u95ed&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">DelayQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">DelayedTask<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> delayQueue <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">DelayQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6dfb\u52a0\u5ef6\u8fdf\u4efb\u52a1&#xff1a;3\u79d2\u540e\u53ef\u88ab\u6d88\u8d39<\/span><br \/>\n        delayQueue<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">DelayedTask<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u8ba2\u5355123\u8d85\u65f6\u5173\u95ed&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6d88\u8d39\u4efb\u52a1&#xff1a;take()\u4f1a\u963b\u585e\u76f4\u5230\u4efb\u52a1\u5230\u671f<\/span><br \/>\n        <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token class-name\">DelayedTask<\/span> task <span class=\"token operator\">&#061;<\/span> delayQueue<span class=\"token punctuation\">.<\/span><span class=\"token function\">take<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;\u6267\u884c\u5ef6\u8fdf\u4efb\u52a1&#xff1a;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> task<span class=\"token punctuation\">.<\/span><span class=\"token function\">getTaskName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">catch<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">InterruptedException<\/span> e<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentThread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">interrupt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">start<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u7b49\u5f853\u79d2\u770b\u5ef6\u8fdf\u4efb\u52a1\u6267\u884c<\/span><br \/>\n        <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">sleep<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/**<br \/>\n     * \u5ef6\u8fdf\u4efb\u52a1\u793a\u4f8b&#xff08;\u5b9e\u73b0Delayed\u63a5\u53e3&#xff09;<br \/>\n     *\/<\/span><br \/>\n    <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">DelayedTask<\/span> <span class=\"token keyword\">implements<\/span> <span class=\"token class-name\">Delayed<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">String<\/span> taskName<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token keyword\">long<\/span> expireTime<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u4efb\u52a1\u5230\u671f\u65f6\u95f4&#xff08;\u6beb\u79d2&#xff09;<\/span><\/p>\n<p>        <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">DelayedTask<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> taskName<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">long<\/span> delayMillis<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>taskName <span class=\"token operator\">&#061;<\/span> taskName<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>expireTime <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#043;<\/span> delayMillis<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">getTaskName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> taskName<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u5269\u4f59\u5ef6\u8fdf\u65f6\u95f4&#xff08;\u6838\u5fc3\u65b9\u6cd5&#xff09;<\/span><br \/>\n        <span class=\"token annotation punctuation\">&#064;Override<\/span><br \/>\n        <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">long<\/span> <span class=\"token function\">getDelay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">TimeUnit<\/span> unit<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> unit<span class=\"token punctuation\">.<\/span><span class=\"token function\">convert<\/span><span class=\"token punctuation\">(<\/span>expireTime <span class=\"token operator\">&#8211;<\/span> <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">currentTimeMillis<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">TimeUnit<\/span><span class=\"token punctuation\">.<\/span>MILLISECONDS<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u4f18\u5148\u7ea7\u6bd4\u8f83&#xff08;DelayQueue\u6392\u5e8f\u7528&#xff09;<\/span><br \/>\n        <span class=\"token annotation punctuation\">&#064;Override<\/span><br \/>\n        <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">compareTo<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Delayed<\/span> o<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token class-name\">Long<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">compare<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getDelay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">TimeUnit<\/span><span class=\"token punctuation\">.<\/span>MILLISECONDS<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> o<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDelay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">TimeUnit<\/span><span class=\"token punctuation\">.<\/span>MILLISECONDS<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u9009\u62e9\u5e76\u53d1\u5bb9\u5668&#xff1a;\u9488\u5bf9\u4e0d\u540c\u5e76\u53d1\u573a\u666f\u9009\u62e9\u6700\u9002\u5408\u7684\u5bb9\u5668&#xff0c;\u51cf\u5c11\u9501\u7ade\u4e89<\/p>\n<h3>6.3 \u4f7f\u7528\u7ebf\u7a0b\u6c60\u7ba1\u7406\u7ebf\u7a0b<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u76f4\u63a5\u521b\u5efa\u7ebf\u7a0b<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Thread<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6267\u884c\u4efb\u52a1<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">start<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9891\u7e41\u521b\u5efa\u9500\u6bc1\u7ebf\u7a0b<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u4f7f\u7528\u7ebf\u7a0b\u6c60<\/span><br \/>\n<span class=\"token class-name\">ExecutorService<\/span> executor <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">Executors<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">newFixedThreadPool<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    executor<span class=\"token punctuation\">.<\/span><span class=\"token function\">submit<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6267\u884c\u4efb\u52a1<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\nexecutor<span class=\"token punctuation\">.<\/span><span class=\"token function\">shutdown<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u7ebf\u7a0b\u7684\u521b\u5efa\u548c\u9500\u6bc1\u662f\u6602\u8d35\u7684\u64cd\u4f5c\u3002\u7ebf\u7a0b\u6c60\u53ef\u4ee5\u91cd\u7528\u7ebf\u7a0b&#xff0c;\u51cf\u5c11\u521b\u5efa\u5f00\u9500&#xff0c;\u540c\u65f6\u63a7\u5236\u5e76\u53d1\u6570\u91cf&#xff0c;\u907f\u514d\u8d44\u6e90\u8017\u5c3d\u3002<\/p>\n<h3>6.4 \u5728\u9ad8\u5e76\u53d1\u573a\u666f\u4e2d&#xff0c;\u8fc7\u5ea6\u540c\u6b65\u4f1a\u964d\u4f4e\u6027\u80fd\u3002<\/h3>\n<h4>\u573a\u666f 1&#xff1a;\u9501\u7c92\u5ea6\u4f18\u5316&#xff08;\u6700\u6838\u5fc3&#xff09;<\/h4>\n<p>\u95ee\u9898&#xff1a;\u540c\u6b65\u6574\u4e2a\u65b9\u6cd5&#xff0c;\u5305\u542b\u5927\u91cf\u65e0\u9700\u540c\u6b65\u7684\u903b\u8f91&#xff0c;\u5bfc\u81f4\u9501\u7ade\u4e89\u6fc0\u70c8\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">SyncOptimization<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5171\u4eab\u72b6\u6001&#xff08;\u4ec5\u8be5\u53d8\u91cf\u9700\u8981\u7ebf\u7a0b\u5b89\u5168&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">int<\/span> count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u975e\u5171\u4eab\u72b6\u6001&#xff08;\u65e0\u9700\u540c\u6b65&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> configMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u274c \u8fc7\u5ea6\u540c\u6b65&#xff1a;\u540c\u6b65\u6574\u4e2a\u65b9\u6cd5&#xff0c;\u5305\u542b\u65e0\u9700\u540c\u6b65\u7684configMap\u64cd\u4f5c&#xff0c;\u9501\u7c92\u5ea6\u592a\u5927<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">synchronized<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u65e0\u9700\u540c\u6b65\u7684\u903b\u8f91&#xff08;\u5374\u88ab\u52a0\u9501&#xff0c;\u5bfc\u81f4\u7ebf\u7a0b\u4e32\u884c&#xff09;<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> config <span class=\"token operator\">&#061;<\/span> configMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token function\">doSomeNonSyncWork<\/span><span class=\"token punctuation\">(<\/span>config<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ 2. \u4ec5\u8fd9\u884c\u9700\u8981\u540c\u6b65&#xff08;\u66f4\u65b0\u5171\u4eab\u53d8\u91cf&#xff09;<\/span><br \/>\n        count<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316&#xff1a;\u7f29\u5c0f\u9501\u7c92\u5ea6&#xff0c;\u4ec5\u540c\u6b65\u6838\u5fc3\u5171\u4eab\u53d8\u91cf\u7684\u4fee\u6539\u903b\u8f91<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processDataOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ 1. \u65e0\u9700\u540c\u6b65\u7684\u903b\u8f91&#xff1a;\u5e76\u884c\u6267\u884c&#xff0c;\u65e0\u9501\u7ade\u4e89<\/span><br \/>\n        <span class=\"token class-name\">String<\/span> config <span class=\"token operator\">&#061;<\/span> configMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token function\">doSomeNonSyncWork<\/span><span class=\"token punctuation\">(<\/span>config<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ 2. \u4ec5\u5bf9\u5171\u4eab\u53d8\u91cf\u4fee\u6539\u52a0\u9501&#xff0c;\u9501\u7c92\u5ea6\u6700\u5c0f\u5316<\/span><br \/>\n        <span class=\"token keyword\">synchronized<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/\/ \u66f4\u4f18&#xff1a;\u4f7f\u7528\u4e13\u7528\u9501\u5bf9\u8c61&#xff08;\u5982private final Object lock &#061; new Object()&#xff09;<\/span><br \/>\n            count<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u6a21\u62df\u65e0\u9700\u540c\u6b65\u7684\u8017\u65f6\u64cd\u4f5c<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">doSomeNonSyncWork<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> config<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4e1a\u52a1\u903b\u8f91&#xff1a;\u5982\u89e3\u6790\u914d\u7f6e\u3001\u6570\u636e\u8f6c\u6362\u7b49&#xff08;\u65e0\u5171\u4eab\u72b6\u6001\u4fee\u6539&#xff09;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u573a\u666f 2&#xff1a;\u4f7f\u7528\u5e76\u53d1\u5bb9\u5668\u66ff\u4ee3\u540c\u6b65\u5bb9\u5668 \/ \u624b\u52a8\u52a0\u9501<\/h4>\n<p>\u95ee\u9898&#xff1a;\u7528Hashtable\/Collections.synchronizedMap&#xff08;\u5168\u8868\u9501&#xff09;&#xff0c;\u9ad8\u5e76\u53d1\u4e0b\u6240\u6709\u64cd\u4f5c\u4e32\u884c\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>concurrent<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ConcurrentHashMap<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ConcurrentContainerOptimization<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u274c \u8fc7\u5ea6\u540c\u6b65&#xff1a;synchronizedMap\u662f\u5168\u8868\u9501&#xff0c;put\/get\u90fd\u52a0\u9501&#xff0c;\u9ad8\u5e76\u53d1\u6027\u80fd\u5dee<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> SYNC_MAP <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">Collections<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">synchronizedMap<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316&#xff1a;\u4f7f\u7528ConcurrentHashMap&#xff08;\u5206\u6bb5\u9501\/CAS\u4f18\u5316&#xff0c;\u4ec5\u9501\u5b9a\u5f53\u524d\u6876&#xff0c;\u5e76\u53d1\u5ea6\u9ad8&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> CONCURRENT_MAP <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ConcurrentHashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">Object<\/span> <span class=\"token function\">getValue<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ ConcurrentHashMap\u7684get\u64cd\u4f5c\u65e0\u9501&#xff08;volatile\u4fdd\u8bc1\u53ef\u89c1\u6027&#xff09;&#xff0c;put\u4ec5\u9501\u5b9a\u5f53\u524d\u6876<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> CONCURRENT_MAP<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">putValue<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span> value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        CONCURRENT_MAP<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u573a\u666f 3&#xff1a;\u4f7f\u7528\u539f\u5b50\u7c7b\u66ff\u4ee3 synchronized&#xff08;\u7b80\u5355\u6570\u503c\u64cd\u4f5c&#xff09;<\/h4>\n<p>\u95ee\u9898&#xff1a;\u7528synchronized\u4fdd\u62a4\u7b80\u5355\u7684\u6570\u503c\u589e\u51cf&#xff0c;\u9501\u5f00\u9500\u5927\u4e8e\u4e1a\u52a1\u903b\u8f91<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>concurrent<span class=\"token punctuation\">.<\/span>atomic<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">AtomicInteger<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">AtomicClassOptimization<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u274c \u8fc7\u5ea6\u540c\u6b65&#xff1a;\u7b80\u5355\u8ba1\u6570\u7528synchronized&#xff0c;\u9501\u5f00\u9500\u9ad8<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">int<\/span> count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">synchronized<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">increment<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        count<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316&#xff1a;\u4f7f\u7528AtomicInteger&#xff08;CAS\u65e0\u9501\u64cd\u4f5c&#xff0c;\u6027\u80fd\u63d0\u534710\u500d&#043;&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">AtomicInteger<\/span> atomicCount <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">AtomicInteger<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">incrementOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ CAS&#xff08;Compare-And-Swap&#xff09;\u65e0\u9501\u66f4\u65b0&#xff0c;\u65e0\u4e0a\u4e0b\u6587\u5207\u6362\u5f00\u9500<\/span><br \/>\n        atomicCount<span class=\"token punctuation\">.<\/span><span class=\"token function\">incrementAndGet<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u573a\u666f 4&#xff1a;\u8bfb\u5199\u5206\u79bb&#xff08;\u8bfb\u591a\u5199\u5c11\u573a\u666f&#xff09;<\/h4>\n<p>\u95ee\u9898&#xff1a;\u8bfb\u5199\u90fd\u52a0\u540c\u4e00\u628a\u9501&#xff0c;\u8bfb\u64cd\u4f5c\u88ab\u5199\u64cd\u4f5c\u963b\u585e&#xff0c;\u9ad8\u9891\u8bfb\u573a\u666f\u6027\u80fd\u5dee\u3002<\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span>concurrent<span class=\"token punctuation\">.<\/span>locks<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ReentrantReadWriteLock<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ReadWriteLockOptimization<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5171\u4eab\u6570\u636e&#xff08;\u8bfb\u591a\u5199\u5c11&#xff0c;\u5982\u914d\u7f6e\u7f13\u5b58&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> dataMap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u8bfb\u5199\u9501&#xff1a;\u8bfb\u9501\u53ef\u5171\u4eab&#xff08;\u591a\u4e2a\u8bfb\u7ebf\u7a0b\u5e76\u884c&#xff09;&#xff0c;\u5199\u9501\u6392\u4ed6&#xff08;\u4ec5\u4e00\u4e2a\u5199\u7ebf\u7a0b&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ReentrantReadWriteLock<\/span> rwLock <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ReentrantReadWriteLock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ReentrantReadWriteLock<span class=\"token punctuation\">.<\/span>ReadLock<\/span> readLock <span class=\"token operator\">&#061;<\/span> rwLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">readLock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">final<\/span> <span class=\"token class-name\">ReentrantReadWriteLock<span class=\"token punctuation\">.<\/span>WriteLock<\/span> writeLock <span class=\"token operator\">&#061;<\/span> rwLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">writeLock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u274c \u8fc7\u5ea6\u540c\u6b65&#xff1a;\u8bfb\u5199\u90fd\u7528synchronized&#xff0c;\u8bfb\u7ebf\u7a0b\u4e32\u884c<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">synchronized<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> dataMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">synchronized<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span> value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        dataMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316&#xff1a;\u8bfb\u5199\u5206\u79bb&#xff0c;\u8bfb\u9501\u5171\u4eab&#xff0c;\u5199\u9501\u6392\u4ed6<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">getOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        readLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">lock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u591a\u4e2a\u8bfb\u7ebf\u7a0b\u53ef\u5e76\u884c\u6267\u884c&#xff0c;\u65e0\u9501\u7ade\u4e89<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> dataMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            readLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">unlock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">putOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">String<\/span> value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        writeLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">lock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ \u5199\u64cd\u4f5c\u6392\u4ed6&#xff0c;\u4fdd\u8bc1\u6570\u636e\u4e00\u81f4\u6027<\/span><br \/>\n            dataMap<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">,<\/span> value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            writeLock<span class=\"token punctuation\">.<\/span><span class=\"token function\">unlock<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>\u573a\u666f 5&#xff1a;\u907f\u514d\u4e0d\u5fc5\u8981\u7684\u540c\u6b65&#xff08;\u65e0\u5171\u4eab\u72b6\u6001&#xff09;<\/h4>\n<p>\u95ee\u9898&#xff1a;\u65b9\u6cd5\u65e0\u5171\u4eab\u72b6\u6001&#xff0c;\u5374\u52a0\u4e86synchronized&#xff0c;\u5b8c\u5168\u65e0\u610f\u4e49\u4e14\u635f\u8017\u6027\u80fd<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">UnnecessarySyncOptimization<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u274c \u8fc7\u5ea6\u540c\u6b65&#xff1a;\u65b9\u6cd5\u65e0\u5171\u4eab\u72b6\u6001&#xff0c;synchronized\u5b8c\u5168\u591a\u4f59<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">synchronized<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">processSingleThreadData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> input<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4ec5\u5904\u7406\u65b9\u6cd5\u5185\u5c40\u90e8\u53d8\u91cf&#xff0c;\u65e0\u4efb\u4f55\u5171\u4eab\u72b6\u6001\u4fee\u6539<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> input<span class=\"token punctuation\">.<\/span><span class=\"token function\">toUpperCase<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u2705 \u4f18\u5316&#xff1a;\u79fb\u9664\u4e0d\u5fc5\u8981\u7684\u540c\u6b65&#xff0c;\u65b9\u6cd5\u5929\u7136\u7ebf\u7a0b\u5b89\u5168<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">processSingleThreadDataOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> input<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> input<span class=\"token punctuation\">.<\/span><span class=\"token function\">toUpperCase<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h2>7 \u6570\u636e\u5e93\u64cd\u4f5c\u4f18\u5316<\/h2>\n<h3>7.1 \u4f7f\u7528PreparedStatement<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c Statement\u5bb9\u6613\u5bfc\u81f4SQL\u6ce8\u5165<\/span><br \/>\n<span class=\"token class-name\">Statement<\/span> stmt <span class=\"token operator\">&#061;<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">createStatement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">String<\/span> sql <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;SELECT * FROM users WHERE id &#061; &#034;<\/span> <span class=\"token operator\">&#043;<\/span> userId<span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 PreparedStatement&#xff08;\u9884\u7f16\u8bd1\u3001\u9632\u6ce8\u5165&#xff09;<\/span><br \/>\n<span class=\"token class-name\">String<\/span> sql <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;SELECT * FROM users WHERE id &#061; ?&#034;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">PreparedStatement<\/span> pstmt <span class=\"token operator\">&#061;<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">prepareStatement<\/span><span class=\"token punctuation\">(<\/span>sql<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\npstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">setInt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> userId<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;PreparedStatement&#xff0c;SQL\u9884\u7f16\u8bd1\u63d0\u9ad8\u6267\u884c\u6548\u7387&#xff0c;\u53c2\u6570\u5316\u9632\u6b62SQL\u6ce8\u5165<\/p>\n<h3>7.2 \u6279\u91cf\u5904\u7406<\/h3>\n<p><span class=\"token comment\">\/\/ \u6279\u91cf\u63d2\u5165\u6570\u636e<\/span><br \/>\n<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">PreparedStatement<\/span> pstmt <span class=\"token operator\">&#061;<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">prepareStatement<\/span><span class=\"token punctuation\">(<\/span><br \/>\n        <span class=\"token string\">&#034;INSERT INTO users (name, age) VALUES (?, ?)&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">User<\/span> user <span class=\"token operator\">:<\/span> userList<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        pstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">setString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> user<span class=\"token punctuation\">.<\/span><span class=\"token function\">getName<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        pstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">setInt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> user<span class=\"token punctuation\">.<\/span><span class=\"token function\">getAge<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        pstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">addBatch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u6dfb\u52a0\u5230\u6279\u91cf<\/span><\/p>\n<p>        <span class=\"token comment\">\/\/ \u6bcf1000\u6761\u6267\u884c\u4e00\u6b21<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">%<\/span> <span class=\"token number\">1000<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            pstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeBatch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    pstmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeBatch<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u6267\u884c\u5269\u4f59\u7684<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u6279\u91cf\u5904\u7406&#xff1a;\u51cf\u5c11\u6570\u636e\u5e93\u8fde\u63a5\u6b21\u6570\u548c\u7f51\u7edcIO&#xff0c;\u63d0\u9ad8\u6570\u636e\u64cd\u4f5c\u6548\u7387<\/p>\n<h2>8 \u7b97\u6cd5\u4f18\u5316<\/h2>\n<h3>8.1 \u7a7a\u95f4\u6362\u65f6\u95f4<\/h3>\n<p><span class=\"token comment\">\/\/ \u4f7f\u7528\u7f13\u5b58\u8ba1\u7b97\u7ed3\u679c<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">BigInteger<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> cache <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HashMap<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">BigInteger<\/span> <span class=\"token function\">factorial<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> n<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>cache<span class=\"token punctuation\">.<\/span><span class=\"token function\">containsKey<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> cache<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token class-name\">BigInteger<\/span> result <span class=\"token operator\">&#061;<\/span> <span class=\"token comment\">\/\/ \u8ba1\u7b97\u9636\u4e58<\/span><br \/>\n    cache<span class=\"token punctuation\">.<\/span><span class=\"token function\">put<\/span><span class=\"token punctuation\">(<\/span>n<span class=\"token punctuation\">,<\/span> result<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> result<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u7a7a\u95f4\u6362\u65f6\u95f4&#xff1a;\u4f7f\u7528\u7f13\u5b58\u5b58\u50a8\u8ba1\u7b97\u7ed3\u679c&#xff0c;\u907f\u514d\u91cd\u590d\u8ba1\u7b97\u63d0\u9ad8\u6027\u80fd<\/p>\n<h3>8.2 \u907f\u514d\u91cd\u590d\u8ba1\u7b97<\/h3>\n<p><span class=\"token comment\">\/\/ \u274c \u91cd\u590d\u8ba1\u7b97<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>user <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">&amp;&amp;<\/span> user<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDepartment<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><br \/>\n    <span class=\"token operator\">&amp;&amp;<\/span> user<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDepartment<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getCompany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ &#8230;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u2705 \u63d0\u524d\u8fd4\u56de<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>user <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">Department<\/span> dept <span class=\"token operator\">&#061;<\/span> user<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDepartment<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>dept <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">Company<\/span> company <span class=\"token operator\">&#061;<\/span> dept<span class=\"token punctuation\">.<\/span><span class=\"token function\">getCompany<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>company <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u907f\u514d\u91cd\u590d\u8ba1\u7b97&#xff1a;\u63d0\u524d\u8fd4\u56de\u548c\u63d0\u53d6\u516c\u5171\u8ba1\u7b97&#xff0c;\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u903b\u8f91\u5224\u65ad<\/p>\n<h2>9 \u5185\u5b58\u4f18\u5316<\/h2>\n<h3>9.1 \u53ca\u65f6\u91ca\u653e\u5f15\u7528<\/h3>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">processLargeData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">byte<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> largeData <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">loadLargeData<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5904\u7406\u6570\u636e<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        largeData <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ \u5e2e\u52a9GC<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u53ca\u65f6\u91ca\u653e\u5f15\u7528&#xff1a;\u663e\u5f0f\u7f6enull\u5e2e\u52a9\u5783\u573e\u6536\u96c6\u5668\u8bc6\u522b\u53ef\u56de\u6536\u5bf9\u8c61<\/p>\n<h3>9.2 \u4f7f\u7528\u8f6f\u5f15\u7528\/\u5f31\u5f15\u7528\u7f13\u5b58<\/h3>\n<p><span class=\"token comment\">\/\/ \u4f7f\u7528\u8f6f\u5f15\u7528\u5b9e\u73b0\u7f13\u5b58<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token class-name\">SoftReference<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Map<\/span><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> cacheRef<span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">Object<\/span> <span class=\"token function\">getFromCache<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">Map<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">Object<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> cache <span class=\"token operator\">&#061;<\/span> cacheRef<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>cache <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        cache <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">loadCache<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        cacheRef <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SoftReference<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span>cache<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> cache<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u539f\u7406\u5206\u6790&#xff1a;\u8f6f\u5f15\u7528\u7f13\u5b58&#xff1a;\u5185\u5b58\u4e0d\u8db3\u65f6\u81ea\u52a8\u91ca\u653e\u7f13\u5b58&#xff0c;\u5e73\u8861\u6027\u80fd\u548c\u5185\u5b58\u4f7f\u7528<\/p>\n<h2>\u4f18\u5316\u539f\u5219\u603b\u7ed3<\/h2>\n<li>\u6d4b\u91cf\u4f18\u5148&#xff1a;\u4f7f\u7528Profiler\u5de5\u5177&#xff08;\u5982JProfiler\u3001VisualVM&#xff09;\u627e\u51fa\u771f\u6b63\u7684\u6027\u80fd\u74f6\u9888<\/li>\n<li>\u907f\u514d\u8fc7\u5ea6\u4f18\u5316&#xff1a;\u5173\u6ce880\/20\u539f\u5219&#xff0c;\u4f18\u5316\u5173\u952e\u8def\u5f84<\/li>\n<li>\u4ee3\u7801\u53ef\u8bfb\u6027&#xff1a;\u4f18\u5316\u4e0d\u5e94\u727a\u7272\u4ee3\u7801\u7684\u53ef\u7ef4\u62a4\u6027<\/li>\n<li>\u8003\u8651JIT\u4f18\u5316&#xff1a;HotSpot JVM\u4f1a\u81ea\u52a8\u4f18\u5316\u70ed\u70b9\u4ee3\u7801<\/li>\n<li>\u5173\u6ce8GC\u5f71\u54cd&#xff1a;\u51cf\u5c11\u5bf9\u8c61\u521b\u5efa&#xff0c;\u6ce8\u610f\u5927\u5bf9\u8c61\u5bf9GC\u7684\u5f71\u54cd<\/li>\n<p>\u6ce8\u610f&#xff1a;\u4f18\u5316\u524d\u52a1\u5fc5\u8fdb\u884c\u6027\u80fd\u6d4b\u8bd5\u548c\u57fa\u51c6\u6d4b\u8bd5&#xff0c;\u786e\u4fdd\u4f18\u5316\u771f\u6b63\u6709\u6548\u3002\u4e0d\u540c\u7684\u5e94\u7528\u573a\u666f\u53ef\u80fd\u9700\u8981\u4e0d\u540c\u7684\u4f18\u5316\u7b56\u7565\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. \u5b57\u7b26\u4e32\u64cd\u4f5c\u4f18\u5316<br \/>\n1.1 \u4f7f\u7528StringBuilder\u8fdb\u884c\u5b57\u7b26\u4e32\u62fc\u63a5<br \/>\n\/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u5728\u5faa\u73af\u4e2d\u4f7f\u7528\\&#8221;\\&#8221;\u62fc\u63a5\u5b57\u7b26\u4e32<br \/>\nString result  \\&#8221;\\&#8221;;<br \/>\nfor (int i  0; i &lt; 10000; i) {result  i; \/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u7684StringBuilder\u5bf9\u8c61<br \/>\n}\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u663e\u5f0f\u4f7f\u7528StringBuilder<br \/>\nStringBuilder sb  new StringBuilder();<br \/>\nfor (i<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[99,190,56],"topic":[],"class_list":["post-70589","post","type-post","status-publish","format-standard","hentry","category-server","tag-java","tag-190","tag-56"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/70589.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"1. \u5b57\u7b26\u4e32\u64cd\u4f5c\u4f18\u5316 1.1 \u4f7f\u7528StringBuilder\u8fdb\u884c\u5b57\u7b26\u4e32\u62fc\u63a5 \/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u5728\u5faa\u73af\u4e2d\u4f7f\u7528&quot;&quot;\u62fc\u63a5\u5b57\u7b26\u4e32 String result &quot;&quot;; for (int i 0; i &lt; 10000; i) {result i; \/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u7684StringBuilder\u5bf9\u8c61 }\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u663e\u5f0f\u4f7f\u7528StringBuilder StringBuilder sb new StringBuilder(); for (i\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/70589.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-01T20:41:02+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/70589.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/70589.html\",\"name\":\"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-02-01T20:41:02+00:00\",\"dateModified\":\"2026-02-01T20:41:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/70589.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/70589.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/70589.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/70589.html","og_locale":"zh_CN","og_type":"article","og_title":"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"1. \u5b57\u7b26\u4e32\u64cd\u4f5c\u4f18\u5316 1.1 \u4f7f\u7528StringBuilder\u8fdb\u884c\u5b57\u7b26\u4e32\u62fc\u63a5 \/\/ \u274c \u95ee\u9898\u4ee3\u7801&#xff1a;\u5728\u5faa\u73af\u4e2d\u4f7f\u7528\"\"\u62fc\u63a5\u5b57\u7b26\u4e32 String result \"\"; for (int i 0; i &lt; 10000; i) {result i; \/\/ \u6bcf\u6b21\u5faa\u73af\u90fd\u521b\u5efa\u65b0\u7684StringBuilder\u5bf9\u8c61 }\/\/ \u2705 \u4f18\u5316\u65b9\u6848&#xff1a;\u663e\u5f0f\u4f7f\u7528StringBuilder StringBuilder sb new StringBuilder(); for (i","og_url":"https:\/\/www.wsisp.com\/helps\/70589.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-02-01T20:41:02+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"24 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/70589.html","url":"https:\/\/www.wsisp.com\/helps\/70589.html","name":"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-02-01T20:41:02+00:00","dateModified":"2026-02-01T20:41:02+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/70589.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/70589.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/70589.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Java\u6027\u80fd\u4f18\u5316\u6280\u5de7"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/70589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=70589"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/70589\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=70589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=70589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=70589"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=70589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}