gailan.html.2fc6248d.js 32.6 KB
Newer Older
沉默王二's avatar
沉默王二 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
import{_ as p}from"./plugin-vue_export-helper.21dcd24c.js";import{r as t,o as e,c as o,a as n,b as c,e as l,d as a}from"./app.36bfa2ec.js";const i={},u=l(`<p>\u773C\u7785\u7740\u4E09\u59B9\u7684\u738B\u8005\u8363\u8000\u6740\u5F97\u6B63\u55E8\uFF0C\u6211\u8D81\u673A\u558A\u5230\uFF1A\u201C\u522B\u6253\u4E86\uFF0C\u4E09\u59B9\uFF0C\u6211\u4EEC\u6765\u4E00\u8D77\u5B66\u4E60 Java \u7684\u96C6\u5408\u6846\u67B6\u5427\u3002\u201D</p><p>\u201C\u624D\u4E0D\u8981\u5462\uFF0C\u7B49\u6211\u6253\u5B8C\u8FD9\u4E00\u5C40\u554A\u3002\u201D\u4E09\u59B9\u5014\u5F3A\u5730\u8BF4\u3002</p><p>\u201C\u597D\u5427\u3002\u201D\u6211\u53EA\u597D\u644A\u644A\u624B\u5730\u8BF4\uFF0C\u201C\u90A3\u6211\u5148\u753B\u5F20\u96C6\u5408\u6846\u67B6\u7684\u7ED3\u6784\u56FE\u7B49\u7740\u4F60\u3002\u201D</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/collection/gailan-01.png" alt=""></p><p>\u201C\u5B8C\u4E86\u6CA1\uFF1F\u4E09\u59B9\u3002\u201D</p><p>\u201C\u5B8C\u4E86\u597D\u4E00\u4F1A\u513F\u4E86\uFF0C\u4E8C\u54E5\uFF0C\u4F60\u56FE\u753B\u5F97\u771F\u6162\uFF0C\u8BA9\u6211\u77A7\u77A7\u600E\u4E48\u6837\uFF1F\u201D</p><p>\u201C\u5BB3\uFF0C\u56FE\u8981\u753B\u5F97\u6E05\u6670\u660E\u4E86\uFF0C\u4E0D\u5BB9\u6613\u7684\u3002\u4E09\u59B9\uFF0C\u4F60\u77A7\uFF0C\u4E0D\u9519\u5427\u3002\u201D</p><p>Java \u96C6\u5408\u6846\u67B6\u53EF\u4EE5\u5206\u4E3A\u4E24\u6761\u5927\u7684\u652F\u7EBF\uFF1A</p><ul><li>Collection\uFF0C\u4E3B\u8981\u7531 List\u3001Set\u3001Queue \u7EC4\u6210\uFF0CList \u4EE3\u8868\u6709\u5E8F\u3001\u53EF\u91CD\u590D\u7684\u96C6\u5408\uFF0C\u5178\u578B\u4EE3\u8868\u5C31\u662F\u5C01\u88C5\u4E86\u52A8\u6001\u6570\u7EC4\u7684 ArrayList \u548C\u5C01\u88C5\u4E86\u94FE\u8868\u7684 LinkedList\uFF1BSet \u4EE3\u8868\u65E0\u5E8F\u3001\u4E0D\u53EF\u91CD\u590D\u7684\u96C6\u5408\uFF0C\u5178\u578B\u4EE3\u8868\u5C31\u662F HashSet \u548C TreeSet\uFF1BQueue \u4EE3\u8868\u961F\u5217\uFF0C\u5178\u578B\u4EE3\u8868\u5C31\u662F\u53CC\u7AEF\u961F\u5217 ArrayDeque\uFF0C\u4EE5\u53CA\u4F18\u5148\u7EA7\u961F\u5217 PriorityQue\u3002</li><li>Map\uFF0C\u4EE3\u8868\u952E\u503C\u5BF9\u7684\u96C6\u5408\uFF0C\u5178\u578B\u4EE3\u8868\u5C31\u662F HashMap\u3002</li></ul><p>\u201C\u63A5\u4E0B\u6765\uFF0C\u6211\u4EEC\u518D\u6765\u8FC7\u4E00\u904D\u3002\u201D</p><h2 id="_01\u3001list" tabindex="-1"><a class="header-anchor" href="#_01\u3001list" aria-hidden="true">#</a> 01\u3001List</h2><blockquote><p>List \u7684\u7279\u70B9\u662F\u5B58\u53D6\u6709\u5E8F\uFF0C\u53EF\u4EE5\u5B58\u653E\u91CD\u590D\u7684\u5143\u7D20\uFF0C\u53EF\u4EE5\u7528\u4E0B\u6807\u5BF9\u5143\u7D20\u8FDB\u884C\u64CD\u4F5C</p></blockquote><h3 id="_1-arraylist" tabindex="-1"><a class="header-anchor" href="#_1-arraylist" aria-hidden="true">#</a> <strong>1\uFF09ArrayList</strong></h3><ul><li>ArrayList \u662F\u7531\u6570\u7EC4\u5B9E\u73B0\u7684\uFF0C\u652F\u6301\u968F\u673A\u5B58\u53D6\uFF0C\u4E5F\u5C31\u662F\u53EF\u4EE5\u901A\u8FC7\u4E0B\u6807\u76F4\u63A5\u5B58\u53D6\u5143\u7D20\uFF1B</li><li>\u4ECE\u5C3E\u90E8\u63D2\u5165\u548C\u5220\u9664\u5143\u7D20\u4F1A\u6BD4\u8F83\u5FEB\u6377\uFF0C\u4ECE\u4E2D\u95F4\u63D2\u5165\u548C\u5220\u9664\u5143\u7D20\u4F1A\u6BD4\u8F83\u4F4E\u6548\uFF0C\u56E0\u4E3A\u6D89\u53CA\u5230\u6570\u7EC4\u5143\u7D20\u7684\u590D\u5236\u548C\u79FB\u52A8\uFF1B</li><li>\u5982\u679C\u5185\u90E8\u6570\u7EC4\u7684\u5BB9\u91CF\u4E0D\u8DB3\u65F6\u4F1A\u81EA\u52A8\u6269\u5BB9\uFF0C\u56E0\u6B64\u5F53\u5143\u7D20\u975E\u5E38\u5E9E\u5927\u7684\u65F6\u5019\uFF0C\u6548\u7387\u4F1A\u6BD4\u8F83\u4F4E\u3002</li></ul><h3 id="_2-linkedlist" tabindex="-1"><a class="header-anchor" href="#_2-linkedlist" aria-hidden="true">#</a> <strong>2\uFF09LinkedList</strong></h3><ul><li>LinkedList \u662F\u7531\u53CC\u5411\u94FE\u8868\u5B9E\u73B0\u7684\uFF0C\u4E0D\u652F\u6301\u968F\u673A\u5B58\u53D6\uFF0C\u53EA\u80FD\u4ECE\u4E00\u7AEF\u5F00\u59CB\u904D\u5386\uFF0C\u76F4\u5230\u627E\u5230\u9700\u8981\u7684\u5143\u7D20\u540E\u8FD4\u56DE\uFF1B</li><li>\u4EFB\u610F\u4F4D\u7F6E\u63D2\u5165\u548C\u5220\u9664\u5143\u7D20\u90FD\u5F88\u65B9\u4FBF\uFF0C\u56E0\u4E3A\u53EA\u9700\u8981\u6539\u53D8\u524D\u4E00\u4E2A\u8282\u70B9\u548C\u540E\u4E00\u4E2A\u8282\u70B9\u7684\u5F15\u7528\u5373\u53EF\uFF0C\u4E0D\u50CF ArrayList \u90A3\u6837\u9700\u8981\u590D\u5236\u548C\u79FB\u52A8\u6570\u7EC4\u5143\u7D20\uFF1B</li><li>\u56E0\u4E3A\u6BCF\u4E2A\u5143\u7D20\u90FD\u5B58\u50A8\u4E86\u524D\u4E00\u4E2A\u548C\u540E\u4E00\u4E2A\u8282\u70B9\u7684\u5F15\u7528\uFF0C\u6240\u4EE5\u76F8\u5BF9\u6765\u8BF4\uFF0C\u5360\u7528\u7684\u5185\u5B58\u7A7A\u95F4\u4F1A\u6BD4 ArrayList \u591A\u4E00\u4E9B\u3002</li></ul><h3 id="_3-vector-\u548C-stack" tabindex="-1"><a class="header-anchor" href="#_3-vector-\u548C-stack" aria-hidden="true">#</a> <strong>3\uFF09Vector \u548C Stack</strong></h3><p>List \u7684\u5B9E\u73B0\u7C7B\u8FD8\u6709\u4E00\u4E2A Vector\uFF0C\u662F\u4E00\u4E2A\u5143\u8001\u7EA7\u7684\u7C7B\uFF0C\u6BD4 ArrayList \u51FA\u73B0\u5F97\u66F4\u65E9\u3002ArrayList \u548C Vector \u975E\u5E38\u76F8\u4F3C\uFF0C\u53EA\u4E0D\u8FC7 Vector \u662F\u7EBF\u7A0B\u5B89\u5168\u7684\uFF0C\u50CF get\u3001set\u3001add \u8FD9\u4E9B\u65B9\u6CD5\u90FD\u52A0\u4E86 <code>synchronized</code> \u5173\u952E\u5B57\uFF0C\u5C31\u5BFC\u81F4\u6267\u884C\u6267\u884C\u6548\u7387\u4F1A\u6BD4\u8F83\u4F4E\uFF0C\u6240\u4EE5\u73B0\u5728\u5DF2\u7ECF\u5F88\u5C11\u7528\u4E86\u3002</p><p>\u66F4\u597D\u7684\u9009\u62E9\u662F\u5E76\u53D1\u5305\u4E0B\u7684 CopyOnWriteArrayList\u3002</p><p>Stack \u662F Vector \u7684\u4E00\u4E2A\u5B50\u7C7B\uFF0C\u672C\u8D28\u4E0A\u4E5F\u662F\u7531\u52A8\u6001\u6570\u7EC4\u5B9E\u73B0\u7684\uFF0C\u53EA\u4E0D\u8FC7\u8FD8\u5B9E\u73B0\u4E86\u5148\u8FDB\u540E\u51FA\u7684\u529F\u80FD\uFF08\u5728 get\u3001set\u3001add \u65B9\u6CD5\u7684\u57FA\u7840\u4E0A\u8FFD\u52A0\u4E86 pop\u3001peek \u7B49\u65B9\u6CD5\uFF09\uFF0C\u6240\u4EE5\u53EB\u6808\u3002</p><p>\u4E0D\u8FC7\uFF0C\u7531\u4E8E Stack \u6267\u884C\u6548\u7387\u6BD4\u8F83\u4F4E\uFF08\u65B9\u6CD5\u4E0A\u540C\u6837\u52A0\u4E86 synchronized \u5173\u952E\u5B57\uFF09\uFF0C\u5C31\u88AB\u53CC\u7AEF\u961F\u5217 ArrayDeque \u53D6\u4EE3\u4E86\u3002</p><h2 id="_02\u3001set" tabindex="-1"><a class="header-anchor" href="#_02\u3001set" aria-hidden="true">#</a> 02\u3001Set</h2><blockquote><p>Set \u7684\u7279\u70B9\u662F\u5B58\u53D6\u65E0\u5E8F\uFF0C\u4E0D\u53EF\u4EE5\u5B58\u653E\u91CD\u590D\u7684\u5143\u7D20\uFF0C\u4E0D\u53EF\u4EE5\u7528\u4E0B\u6807\u5BF9\u5143\u7D20\u8FDB\u884C\u64CD\u4F5C\uFF0C\u548C List \u6709\u5F88\u591A\u4E0D\u540C</p></blockquote><h2 id="_1-hashset" tabindex="-1"><a class="header-anchor" href="#_1-hashset" aria-hidden="true">#</a> <strong>1\uFF09HashSet</strong></h2><p>HashSet \u5176\u5B9E\u662F\u7531 HashMap \u5B9E\u73B0\u7684\uFF0C\u53EA\u4E0D\u8FC7\u503C\u7531\u4E00\u4E2A\u56FA\u5B9A\u7684 Object \u5BF9\u8C61\u586B\u5145\uFF0C\u800C\u952E\u7528\u4E8E\u64CD\u4F5C\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">HashSet</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">E</span><span class="token punctuation">&gt;</span></span>
    <span class="token keyword">extends</span> <span class="token class-name">AbstractSet</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">E</span><span class="token punctuation">&gt;</span></span>
    <span class="token keyword">implements</span> <span class="token class-name">Set</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">E</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">,</span> <span class="token class-name">Cloneable</span><span class="token punctuation">,</span> <span class="token class-name"><span class="token namespace">java<span class="token punctuation">.</span>io<span class="token punctuation">.</span></span>Serializable</span>
<span class="token punctuation">{</span>
    <span class="token keyword">private</span> <span class="token keyword">transient</span> <span class="token class-name">HashMap</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">E</span><span class="token punctuation">,</span><span class="token class-name">Object</span><span class="token punctuation">&gt;</span></span> map<span class="token punctuation">;</span>

    <span class="token comment">// Dummy value to associate with an Object in the backing Map</span>
    <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> <span class="token class-name">Object</span> PRESENT <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token keyword">public</span> <span class="token class-name">HashSet</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        map <span class="token operator">=</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>

    <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">add</span><span class="token punctuation">(</span><span class="token class-name">E</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">return</span> map<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>e<span class="token punctuation">,</span> PRESENT<span class="token punctuation">)</span><span class="token operator">==</span><span class="token keyword">null</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token keyword">public</span> <span class="token keyword">boolean</span> <span class="token function">remove</span><span class="token punctuation">(</span><span class="token class-name">Object</span> o<span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">return</span> map<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span>o<span class="token punctuation">)</span><span class="token operator">==</span>PRESENT<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_2-linkedhashset" tabindex="-1"><a class="header-anchor" href="#_2-linkedhashset" aria-hidden="true">#</a> <strong>2\uFF09LinkedHashSet</strong></h3><p>LinkedHashSet \u7EE7\u627F\u81EA HashSet\uFF0C\u5176\u5B9E\u662F\u7531 LinkedHashMap \u5B9E\u73B0\u7684\uFF0CLinkedHashSet \u7684\u6784\u9020\u65B9\u6CD5\u8C03\u7528\u4E86 HashSet \u7684\u4E00\u4E2A\u7279\u6B8A\u7684\u6784\u9020\u65B9\u6CD5\uFF1A</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token class-name">HashSet</span><span class="token punctuation">(</span><span class="token keyword">int</span> initialCapacity<span class="token punctuation">,</span> <span class="token keyword">float</span> loadFactor<span class="token punctuation">,</span> <span class="token keyword">boolean</span> dummy<span class="token punctuation">)</span> <span class="token punctuation">{</span>
   map <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LinkedHashMap</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> loadFactor<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-treeset" tabindex="-1"><a class="header-anchor" href="#_3-treeset" aria-hidden="true">#</a> <strong>3\uFF09TreeSet</strong></h3><p>\u201C\u4E8C\u54E5\uFF0C\u4E0D\u7528\u4F60\u8BB2\u4E86\uFF0C\u6211\u80FD\u731C\u5230\uFF0CTreeSet \u662F\u7531 TreeMap \u5B9E\u73B0\u7684\uFF0C\u53EA\u4E0D\u8FC7\u540C\u6837\u64CD\u4F5C\u7684\u952E\u4F4D\uFF0C\u503C\u7531\u4E00\u4E2A\u56FA\u5B9A\u7684 Object \u5BF9\u8C61\u586B\u5145\u3002\u201D</p><p>\u54C7\uFF0C\u4E09\u59B9\u90FD\u5B66\u4F1A\u4E86\u63A8\u7406\u3002</p><p>\u201C\u662F\u7684\uFF0C\u603B\u4F53\u4E0A\u6765\u8BF4\uFF0CSet \u96C6\u5408\u4E0D\u662F\u5173\u6CE8\u7684\u91CD\u70B9\uFF0C\u56E0\u4E3A\u5E95\u5C42\u90FD\u662F\u7531 Map \u5B9E\u73B0\u7684\uFF0C\u4E3A\u4EC0\u4E48\u8981\u7528 Map \u5B9E\u73B0\u5462\uFF1F\u4E09\u59B9\u4F60\u80FD\u731C\u5230\u539F\u56E0\u5417\uFF1F\u201D</p><p>\u201C\u8BA9\u6211\u60F3\u60F3\u3002\u201D</p><p>\u201C\u55EF\uFF1F\u96BE\u9053\u662F\u56E0\u4E3A Map \u7684\u952E\u4E0D\u5141\u8BB8\u91CD\u590D\u3001\u65E0\u5E8F\u5417\uFF1F\u201D</p><p>\u8001\u5929\uFF0C\u7ADF\u7136\u88AB\u4E09\u59B9\u731C\u5230\u4E86\u3002</p><p>\u201C\u662F\u7684\uFF0C\u4F60\u8FD9\u6C34\u5E73\u957F\u8FDB\u4E86\u5440\uFF0C\u4E09\u59B9\u3002\u201D</p><h2 id="_03\u3001queue" tabindex="-1"><a class="header-anchor" href="#_03\u3001queue" aria-hidden="true">#</a> 03\u3001Queue</h2><blockquote><p>Queue\uFF0C\u4E5F\u5C31\u662F\u961F\u5217\uFF0C\u901A\u5E38\u9075\u5FAA\u5148\u8FDB\u5148\u51FA\uFF08FIFO\uFF09\u7684\u539F\u5219\uFF0C\u65B0\u5143\u7D20\u63D2\u5165\u5230\u961F\u5217\u7684\u5C3E\u90E8\uFF0C\u8BBF\u95EE\u5143\u7D20\u8FD4\u56DE\u961F\u5217\u7684\u5934\u90E8\u3002</p></blockquote><h3 id="_1-arraydeque" tabindex="-1"><a class="header-anchor" href="#_1-arraydeque" aria-hidden="true">#</a> <strong>1\uFF09ArrayDeque</strong></h3><p>\u4ECE\u540D\u5B57\u4E0A\u53EF\u4EE5\u770B\u5F97\u51FA\uFF0CArrayDeque \u662F\u4E00\u4E2A\u57FA\u4E8E\u6570\u7EC4\u5B9E\u73B0\u7684\u53CC\u7AEF\u961F\u5217\uFF0C\u4E3A\u4E86\u6EE1\u8DB3\u53EF\u4EE5\u540C\u65F6\u5728\u6570\u7EC4\u4E24\u7AEF\u63D2\u5165\u6216\u5220\u9664\u5143\u7D20\u7684\u9700\u6C42\uFF0C\u6570\u7EC4\u5FC5\u987B\u662F\u5FAA\u73AF\u7684\uFF0C\u4E5F\u5C31\u662F\u8BF4\u6570\u7EC4\u7684\u4EFB\u4F55\u4E00\u70B9\u90FD\u53EF\u4EE5\u88AB\u770B\u4F5C\u662F\u8D77\u70B9\u6216\u8005\u7EC8\u70B9\u3002</p><p>\u8FD9\u662F\u4E00\u4E2A\u5305\u542B\u4E86 4 \u4E2A\u5143\u7D20\u7684\u53CC\u7AEF\u961F\u5217\uFF0C\u548C\u4E00\u4E2A\u5305\u542B\u4E86 5 \u4E2A\u5143\u7D20\u7684\u53CC\u7AEF\u961F\u5217\u3002</p><p><img src="http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/collection/gailan-02.png" alt=""></p><p>head \u6307\u5411\u961F\u9996\u7684\u7B2C\u4E00\u4E2A\u6709\u6548\u7684\u5143\u7D20\uFF0Ctail \u6307\u5411\u961F\u5C3E\u7B2C\u4E00\u4E2A\u53EF\u4EE5\u63D2\u5165\u5143\u7D20\u7684\u7A7A\u4F4D\uFF0C\u56E0\u4E3A\u662F\u5FAA\u73AF\u6570\u7EC4\uFF0C\u6240\u4EE5 head \u4E0D\u4E00\u5B9A\u4ECE\u662F\u4ECE 0 \u5F00\u59CB\uFF0Ctail \u4E5F\u4E0D\u4E00\u5B9A\u603B\u662F\u6BD4 head \u5927\u3002</p><h3 id="_2-linkedlist-1" tabindex="-1"><a class="header-anchor" href="#_2-linkedlist-1" aria-hidden="true">#</a> <strong>2\uFF09LinkedList</strong></h3><p>LinkedList \u4E00\u822C\u90FD\u5F52\u5728 List \u4E0B\uFF0C\u53EA\u4E0D\u8FC7\uFF0C\u5B83\u4E5F\u5B9E\u73B0\u4E86 Deque \u63A5\u53E3\uFF0C\u53EF\u4EE5\u4F5C\u4E3A\u961F\u5217\u6765\u4F7F\u7528\u3002\u7B49\u4E8E\u8BF4\uFF0CLinkedList \u540C\u65F6\u5B9E\u73B0\u4E86 Stack\u3001Queue\u3001PriorityQueue \u7684\u6240\u6709\u529F\u80FD\u3002</p><h3 id="_3-priorityqueue" tabindex="-1"><a class="header-anchor" href="#_3-priorityqueue" aria-hidden="true">#</a> <strong>3\uFF09PriorityQueue</strong></h3><p>PriorityQueue \u662F\u4E00\u79CD\u4F18\u5148\u7EA7\u961F\u5217\uFF0C\u5B83\u7684\u51FA\u961F\u987A\u5E8F\u4E0E\u5143\u7D20\u7684\u4F18\u5148\u7EA7\u6709\u5173\uFF0C\u6267\u884C remove \u6216\u8005 poll \u65B9\u6CD5\uFF0C\u8FD4\u56DE\u7684\u603B\u662F\u4F18\u5148\u7EA7\u6700\u9AD8\u7684\u5143\u7D20\u3002</p><p>\u8981\u60F3\u6709\u4F18\u5148\u7EA7\uFF0C\u5143\u7D20\u5C31\u9700\u8981\u5B9E\u73B0 Comparable \u63A5\u53E3\u6216\u8005 Comparator \u63A5\u53E3\u3002</p><h2 id="_04\u3001map" tabindex="-1"><a class="header-anchor" href="#_04\u3001map" aria-hidden="true">#</a> 04\u3001Map</h2><blockquote><p>Map \u4FDD\u5B58\u7684\u662F\u952E\u503C\u5BF9\uFF0C\u952E\u8981\u6C42\u4FDD\u6301\u552F\u4E00\u6027\uFF0C\u503C\u53EF\u4EE5\u91CD\u590D\u3002</p></blockquote><h3 id="_1-hashmap" tabindex="-1"><a class="header-anchor" href="#_1-hashmap" aria-hidden="true">#</a> <strong>1\uFF09HashMap</strong></h3><p>HashMap \u5B9E\u73B0\u4E86 Map \u63A5\u53E3\uFF0C\u6839\u636E\u952E\u7684 HashCode \u503C\u6765\u5B58\u50A8\u6570\u636E\uFF0C\u5177\u6709\u5F88\u5FEB\u7684\u8BBF\u95EE\u901F\u5EA6\uFF0C\u6700\u591A\u5141\u8BB8\u4E00\u4E2A null \u952E\u3002</p><p>HashMap \u4E0D\u8BBA\u662F\u5728\u5B66\u4E60\u8FD8\u662F\u5DE5\u4F5C\u5F53\u4E2D\uFF0C\u4F7F\u7528\u9891\u7387\u90FD\u662F\u76F8\u5F53\u9AD8\u7684\u3002\u968F\u7740 JDK \u7248\u672C\u7684\u4E0D\u65AD\u66F4\u65B0\uFF0CHashMap \u7684\u5E95\u5C42\u4E5F\u4F18\u5316\u4E86\u5F88\u591A\u6B21\uFF0CJDK 8 \u7684\u65F6\u5019\u5F15\u5165\u4E86\u7EA2\u9ED1\u6811\u3002</p><div class="language-java ext-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">final</span> <span class="token class-name">V</span> <span class="token function">putVal</span><span class="token punctuation">(</span><span class="token keyword">int</span> hash<span class="token punctuation">,</span> <span class="token class-name">K</span> key<span class="token punctuation">,</span> <span class="token class-name">V</span> value<span class="token punctuation">,</span> <span class="token keyword">boolean</span> onlyIfAbsent<span class="token punctuation">,</span>
               <span class="token keyword">boolean</span> evict<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token class-name">HashMap<span class="token punctuation">.</span>Node</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">K</span><span class="token punctuation">,</span><span class="token class-name">V</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">[</span><span class="token punctuation">]</span> tab<span class="token punctuation">;</span> <span class="token class-name">HashMap<span class="token punctuation">.</span>Node</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">K</span><span class="token punctuation">,</span><span class="token class-name">V</span><span class="token punctuation">&gt;</span></span> p<span class="token punctuation">;</span> <span class="token keyword">int</span> n<span class="token punctuation">,</span> i<span class="token punctuation">;</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>tab <span class="token operator">=</span> table<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token keyword">null</span> <span class="token operator">||</span> <span class="token punctuation">(</span>n <span class="token operator">=</span> tab<span class="token punctuation">.</span>length<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span>
        n <span class="token operator">=</span> <span class="token punctuation">(</span>tab <span class="token operator">=</span> <span class="token function">resize</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>length<span class="token punctuation">;</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>p <span class="token operator">=</span> tab<span class="token punctuation">[</span>i <span class="token operator">=</span> <span class="token punctuation">(</span>n <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> hash<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span>
        tab<span class="token punctuation">[</span>i<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token function">newNode</span><span class="token punctuation">(</span>hash<span class="token punctuation">,</span> key<span class="token punctuation">,</span> value<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">else</span> <span class="token punctuation">{</span>
        <span class="token class-name">HashMap<span class="token punctuation">.</span>Node</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">K</span><span class="token punctuation">,</span><span class="token class-name">V</span><span class="token punctuation">&gt;</span></span> e<span class="token punctuation">;</span> <span class="token class-name">K</span> k<span class="token punctuation">;</span>
        <span class="token keyword">if</span> <span class="token punctuation">(</span>p<span class="token punctuation">.</span>hash <span class="token operator">==</span> hash <span class="token operator">&amp;&amp;</span>
                <span class="token punctuation">(</span><span class="token punctuation">(</span>k <span class="token operator">=</span> p<span class="token punctuation">.</span>key<span class="token punctuation">)</span> <span class="token operator">==</span> key <span class="token operator">||</span> <span class="token punctuation">(</span>key <span class="token operator">!=</span> <span class="token keyword">null</span> <span class="token operator">&amp;&amp;</span> key<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>k<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
            e <span class="token operator">=</span> p<span class="token punctuation">;</span>
        <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>p <span class="token keyword">instanceof</span> <span class="token class-name">HashMap<span class="token punctuation">.</span>TreeNode</span><span class="token punctuation">)</span>
            e <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token class-name">HashMap<span class="token punctuation">.</span>TreeNode</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">K</span><span class="token punctuation">,</span><span class="token class-name">V</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">)</span>p<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">putTreeVal</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> tab<span class="token punctuation">,</span> hash<span class="token punctuation">,</span> key<span class="token punctuation">,</span> value<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">else</span> <span class="token punctuation">{</span>
            <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">int</span> binCount <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> <span class="token punctuation">;</span> <span class="token operator">++</span>binCount<span class="token punctuation">)</span> <span class="token punctuation">{</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token punctuation">(</span>e <span class="token operator">=</span> p<span class="token punctuation">.</span>next<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                    p<span class="token punctuation">.</span>next <span class="token operator">=</span> <span class="token function">newNode</span><span class="token punctuation">(</span>hash<span class="token punctuation">,</span> key<span class="token punctuation">,</span> value<span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                    <span class="token keyword">if</span> <span class="token punctuation">(</span>binCount <span class="token operator">&gt;=</span> TREEIFY_THRESHOLD <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token comment">// -1 for 1st</span>
                        <span class="token function">treeifyBin</span><span class="token punctuation">(</span>tab<span class="token punctuation">,</span> hash<span class="token punctuation">)</span><span class="token punctuation">;</span>
                    <span class="token keyword">break</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                <span class="token keyword">if</span> <span class="token punctuation">(</span>e<span class="token punctuation">.</span>hash <span class="token operator">==</span> hash <span class="token operator">&amp;&amp;</span>
                        <span class="token punctuation">(</span><span class="token punctuation">(</span>k <span class="token operator">=</span> e<span class="token punctuation">.</span>key<span class="token punctuation">)</span> <span class="token operator">==</span> key <span class="token operator">||</span> <span class="token punctuation">(</span>key <span class="token operator">!=</span> <span class="token keyword">null</span> <span class="token operator">&amp;&amp;</span> key<span class="token punctuation">.</span><span class="token function">equals</span><span class="token punctuation">(</span>k<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
                    <span class="token keyword">break</span><span class="token punctuation">;</span>
                p <span class="token operator">=</span> e<span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
        <span class="token punctuation">}</span>
    <span class="token keyword">return</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>\u4E00\u65E6 HashMap \u53D1\u751F\u54C8\u5E0C\u51B2\u7A81\uFF0C\u5C31\u628A\u76F8\u540C\u952E\u4F4D\u7684\u5730\u65B9\u6539\u6210\u94FE\u8868\uFF0C\u5982\u679C\u94FE\u8868\u7684\u957F\u5EA6\u8D85\u8FC7 8\uFF0C\u5C31\u8BE5\u7528\u7EA2\u9ED1\u6811\u3002</p><h3 id="_2-linkedhashmap" tabindex="-1"><a class="header-anchor" href="#_2-linkedhashmap" aria-hidden="true">#</a> <strong>2\uFF09LinkedHashMap</strong></h3><p>\u5927\u591A\u6570\u60C5\u51B5\u4E0B\uFF0C\u53EA\u8981\u4E0D\u6D89\u53CA\u7EBF\u7A0B\u5B89\u5168\u95EE\u9898\uFF0CMap\u57FA\u672C\u90FD\u53EF\u4EE5\u4F7F\u7528HashMap\uFF0C\u4E0D\u8FC7HashMap\u6709\u4E00\u4E2A\u95EE\u9898\uFF0C\u5C31\u662F\u8FED\u4EE3HashMap\u7684\u987A\u5E8F\u5E76\u4E0D\u662FHashMap\u653E\u7F6E\u7684\u987A\u5E8F\uFF0C\u4E5F\u5C31\u662F\u65E0\u5E8F\u3002HashMap\u7684\u8FD9\u4E00\u7F3A\u70B9\u5F80\u5F80\u4F1A\u5E26\u6765\u56F0\u6270\uFF0C\u56E0\u4E3A\u6709\u4E9B\u573A\u666F\uFF0C\u6211\u4EEC\u671F\u5F85\u4E00\u4E2A\u6709\u5E8F\u7684Map\u3002</p><p>\u4E8E\u662F LinkedHashMap \u5C31\u95EA\u4EAE\u767B\u573A\u4E86\u3002LinkedHashMap \u662F HashMap \u7684\u5B50\u7C7B\uFF0C\u5185\u90E8\u4F7F\u7528\u94FE\u8868\u6765\u8BB0\u5F55\u63D2\u5165/\u8BBF\u95EE\u5143\u7D20\u7684\u987A\u5E8F\u3002</p><p>LinkedHashMap \u53EF\u4EE5\u770B\u4F5C\u662F HashMap + LinkedList \u7684\u5408\u4F53\uFF0C\u5B83\u4F7F\u7528\u4E86 \u54C8\u5E0C\u8868\u6765\u5B58\u50A8\u6570\u636E\uFF0C\u53C8\u7528\u4E86\u53CC\u5411\u94FE\u8868\u6765\u7EF4\u6301\u987A\u5E8F\u3002</p><h3 id="_3-treemap" tabindex="-1"><a class="header-anchor" href="#_3-treemap" aria-hidden="true">#</a> <strong>3\uFF09TreeMap</strong></h3><p>HashMap \u662F\u65E0\u5E8F\u7684\uFF0C\u6240\u4EE5\u904D\u5386\u7684\u65F6\u5019\u5143\u7D20\u7684\u987A\u5E8F\u4E5F\u662F\u4E0D\u53EF\u6D4B\u7684\u3002TreeMap \u662F\u6709\u5E8F\u7684\uFF0C\u5B83\u5728\u5185\u90E8\u4F1A\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\uFF0C\u6240\u4EE5\u904D\u5386\u7684\u65F6\u5019\u5C31\u53EF\u4EE5\u5F97\u5230\u9884\u671F\u7684\u987A\u5E8F\u3002</p><p>\u4E3A\u4E86\u4FDD\u8BC1\u987A\u5E8F\uFF0CTreeMap \u7684\u952E\u5FC5\u987B\u8981\u5B9E\u73B0 Comparable \u63A5\u53E3\u6216\u8005 Comparator \u63A5\u53E3\u3002</p><hr>`,64),r=a("\u6700\u8FD1\u6574\u7406\u4E86\u4E00\u4EFD\u725B\u903C\u7684\u5B66\u4E60\u8D44\u6599\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8EJava\u57FA\u7840\u90E8\u5206\uFF08JVM\u3001Java\u96C6\u5408\u6846\u67B6\u3001\u591A\u7EBF\u7A0B\uFF09\uFF0C\u8FD8\u56CA\u62EC\u4E86 "),k=n("strong",null,"\u6570\u636E\u5E93\u3001\u8BA1\u7B97\u673A\u7F51\u7EDC\u3001\u7B97\u6CD5\u4E0E\u6570\u636E\u7ED3\u6784\u3001\u8BBE\u8BA1\u6A21\u5F0F\u3001\u6846\u67B6\u7C7BSpring\u3001Netty\u3001\u5FAE\u670D\u52A1\uFF08Dubbo\uFF0C\u6D88\u606F\u961F\u5217\uFF09 \u7F51\u5173",-1),d=a(" \u7B49\u7B49\u7B49\u7B49\u2026\u2026\u8BE6\u60C5\u6233\uFF1A"),h={href:"https://tobebetterjavaer.com/pdf/programmer-111.html",target:"_blank",rel:"noopener noreferrer"},m=a("\u53EF\u4EE5\u8BF4\u662F2022\u5E74\u5168\u7F51\u6700\u5168\u7684\u5B66\u4E60\u548C\u627E\u5DE5\u4F5C\u7684PDF\u8D44\u6E90\u4E86"),v=n("p",null,[a("\u5173\u6CE8\u4E8C\u54E5\u7684\u539F\u521B\u516C\u4F17\u53F7 "),n("strong",null,"\u6C89\u9ED8\u738B\u4E8C"),a("\uFF0C\u56DE\u590D"),n("strong",null,"111"),a(" \u5373\u53EF\u514D\u8D39\u9886\u53D6\u3002")],-1),b=n("p",null,[n("img",{src:"http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png",alt:""})],-1);function y(g,_){const s=t("ExternalLinkIcon");return e(),o("div",null,[u,n("p",null,[r,k,d,n("a",h,[m,c(s)])]),v,b])}var M=p(i,[["render",y],["__file","gailan.html.vue"]]);export{M as default};