{"id":156,"date":"2020-05-06T16:16:45","date_gmt":"2020-05-06T08:16:45","guid":{"rendered":"https:\/\/www.blinkedu.cn\/?p=156"},"modified":"2020-05-10T22:02:53","modified_gmt":"2020-05-10T14:02:53","slug":"%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%ef%bc%9a%e5%8a%a8%e6%80%81%e6%95%b0%e7%bb%84","status":"publish","type":"post","link":"https:\/\/www.blinkedu.cn\/index.php\/2020\/05\/06\/%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%ef%bc%9a%e5%8a%a8%e6%80%81%e6%95%b0%e7%bb%84\/","title":{"rendered":"\u6570\u636e\u7ed3\u6784\uff1a\u52a8\u6001\u6570\u7ec4"},"content":{"rendered":"<p>\u6570\u7ec4\u662f\u6211\u4eec\u7ecf\u5e38\u7528\u5230\u7684\u6570\u636e\u7ed3\u6784\uff0c\u521b\u5efa\u6570\u7ec4\u65f6\uff0c\u6211\u4eec\u9700\u8981\u5b9a\u4e49\u6570\u7ec4\u7684\u957f\u5ea6\uff0c\u8ba1\u7b97\u673a\u4f1a\u5728\u5185\u5b58\u4e2d\u5f00\u8f9f\u5bf9\u5e94\u957f\u5ea6\u7684\u4e00\u6bb5\u8fde\u7eed\u7684\u7a7a\u95f4\u6765\u5b58\u653e\u6570\u7ec4\uff0c\u6240\u4ee5\u4e00\u822c\u6570\u7ec4\u7684\u957f\u5ea6\u662f\u56fa\u5b9a\u7684\uff0c\u4f46\u662f\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u4e0d\u80fd\u786e\u5b9a\u6570\u7ec4\u7684\u957f\u5ea6\uff0c\u6240\u4ee5\u56fa\u5b9a\u957f\u5ea6\u7684\u6570\u7ec4\u5c31\u4e0d\u592a\u65b9\u4fbf\u4e86\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u50cfC#\uff0cJava\u7b49\u8bed\u8a00\u90fd\u63d0\u4f9b\u4e86ArrayList\u4f9b\u6211\u4eec\u4f7f\u7528\u3002<\/p>\n<p>\u4e0b\u9762\u4f7f\u7528C#\u5bf9\u539f\u751f\u6570\u7ec4\u8fdb\u884c\u5c01\u88c5\uff0c\u5b9e\u73b0\u4e86\u4e00\u4e2aDynamicArray(\u52a8\u6001\u6570\u7ec4)\uff0c\u4e3b\u8981\u5b9e\u73b0\u4e86\u6570\u7ec4\u7684\u589e\u5220\u6539\u67e5\u57fa\u672c\u529f\u80fd\uff0c\u4ee5\u53ca\u5bf9\u6570\u7ec4\u8fdb\u884c\u52a8\u6001\u6269\u5bb9\u7f29\u5bb9<\/p>\n<h2>\u6838\u5fc3\u4ee3\u7801\u5b9e\u73b0<\/h2>\n<pre><code class=\"language-csharp line-numbers\">using System;\n\npublic class DynamicArray&lt;T&gt;\n{\n    private T[] data = null;    \/\/ \u5b58\u50a8\u6570\u636e\u7684\u6570\u7ec4\n    private int count = 0;      \/\/ \u6570\u7ec4\u5f53\u524d\u5143\u7d20\u4e2a\u6570\n\n    public DynamicArray(int capacity){\n        data = new T[capacity];\n        count = 0;\n    }\n\n    public DynamicArray() : this(10){}\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6570\u7ec4\u4e2d\u5143\u7d20\u7684\u4e2a\u6570\n    \/\/\/ &lt;\/summary&gt;\n    public int Count{\n        get{return count;}\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6570\u7ec4\u7684\u5bb9\u91cf\n    \/\/\/ &lt;\/summary&gt;\n    public int Capacity{\n        get{return data.Length;}\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6570\u7ec4\u662f\u5426\u4e3a\u7a7a\n    \/\/\/ &lt;\/summary&gt;\n    public bool IsEmpty{\n        get{return count == 0;}\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6dfb\u52a0\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;index&quot;&gt;\u76ee\u6807\u7d22\u5f15&lt;\/param&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;\u9700\u8981\u6dfb\u52a0\u7684\u5143\u7d20&lt;\/param&gt;\n    public void Add(int index, T value){\n        if(index &lt; 0 || index &gt; count) throw new IndexOutOfRangeException(&quot;\u6570\u7ec4\u7d22\u5f15\u8d8a\u754c&quot;);\n\n        \/\/ \u5982\u679c\u6570\u7ec4\u5df2\u6ee1\uff0c\u5c31\u8fdb\u884c\u4e24\u500d\u6269\u5bb9\n        if(count == data.Length) \n            ResetCapacity(2 * data.Length);\n        for(int i = count-1; i &gt;= index; i--)\n            data[i+1] = data[i];\n        data[index] = value;\n        count++;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6dfb\u52a0\u5230\u6570\u7ec4\u5934\u90e8\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;&lt;\/param&gt;\n    public void AddFirst(T value){\n        Add(0,value);\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6dfb\u52a0\u5230\u6570\u7ec4\u5c3e\u90e8\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;&lt;\/param&gt;\n    public void AddLast(T value){\n        Add(count,value);\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6839\u636e\u7d22\u5f15\u83b7\u53d6\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public T Get(int index){\n        if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u6570\u7ec4\u7d22\u5f15\u8d8a\u754c&quot;);\n        return data[index];\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u83b7\u53d6\u5934\u90e8\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public T GetFirst(){\n        return data[0];\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u83b7\u53d6\u5c3e\u90e8\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public T GetLast(){\n        return data[count-1];\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6839\u636e\u7d22\u5f15\u4fee\u6539\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n    \/\/\/ &lt;param name=&quot;newValue&quot;&gt;&lt;\/param&gt;\n    public void Set(int index,T newValue){\n        if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u6570\u7ec4\u7d22\u5f15\u8d8a\u754c&quot;);\n        data[index] = newValue;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u6570\u7ec4\u662f\u5426\u5305\u542b\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public bool Contains(T value){\n        for (int i = 0; i &lt; count; i++) {\n            if(data[i].Equals(value)) return true;\n        }\n        return false;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u67e5\u627e\u5143\u7d20\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public int IndexOf(T value){\n        for (int i = 0; i &lt; count; i++) {\n            if(data[i].Equals(value)) return i;\n        }\n        return -1;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5220\u9664\u7d22\u5f15\u4f4d\u7f6e\u4e0a\u7684\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;index&quot;&gt;&lt;\/param&gt;\n    \/\/\/ &lt;returns&gt;\u5220\u9664\u7684\u5143\u7d20 &lt;\/returns&gt;\n    public T RemoveAt(int index){\n        if(index &lt; 0 || index &gt;= count) throw new IndexOutOfRangeException(&quot;\u6570\u7ec4\u7d22\u5f15\u8d8a\u754c&quot;);\n        T delValue = data[index];\n        for(int i = index; i &lt; count - 1; i++){\n            data[i] = data[i + 1];\n        }\n        count--;\n        data[count] = default(T);\n\n        \/\/ \u5982\u679c\u6570\u7ec4\u5143\u7d20\u4e2a\u6570\u53ea\u6709\u5bb9\u91cf\u7684\u56db\u5206\u4e4b\u4e00\uff0c\u5c31\u8fdb\u884c\u7f29\u5bb9\u64cd\u4f5c\n        \/\/ \u9632\u6b62\u9891\u7e41\u7f29\u5bb9\u6269\u5bb9\n        if(count == data.Length \/ 4)\n            ResetCapacity(data.Length\/2);\n\n        return delValue;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5220\u9664\u5934\u90e8\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public T RemoveFirst(){\n        return RemoveAt(0);\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5220\u9664\u5c3e\u90e8\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public T RemoveLast(){\n        return RemoveAt(count - 1);\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u5220\u9664\u5143\u7d20\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;param name=&quot;value&quot;&gt;&lt;\/param&gt;\n    public void Remove(T value){\n        int index = IndexOf(value);\n        if(index != -1){\n            RemoveAt(index);\n        }\n    }\n\n    \/\/ \u91cd\u7f6e\u6570\u7ec4\u5bb9\u91cf\n    private void ResetCapacity(int newCapacity){\n        T[] newData = new T[newCapacity];\n        for(int i = 0; i &lt; count; i++){\n            newData[i] = data[i];\n        }\n        data = newData;\n    }\n\n    \/\/\/ &lt;summary&gt;\n    \/\/\/ \u91cd\u5199ToString\u51fd\u6570\uff0c\u65b9\u4fbf\u6253\u5370\u4fe1\u606f\n    \/\/\/ &lt;\/summary&gt;\n    \/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n    public override string ToString(){\n        System.Text.StringBuilder strb = new System.Text.StringBuilder();\n        strb.AppendFormat(&quot;DynamicArray: Count={0}  Capacity={1}\\n&quot;,count,data.Length);\n        strb.Append(&quot;[&quot;);\n        for (int i = 0; i &lt; count; i++) {\n            strb.Append(data[i]);\n            if(i != count-1)\n                strb.Append(&quot;, &quot;);\n        }\n        strb.Append(&quot;]&quot;);\n        return strb.ToString();\n    }\n}\n<\/code><\/pre>\n<h2>\u6d4b\u8bd5<\/h2>\n<pre><code class=\"language-csharp line-numbers\">class Program\n{\n    public static void Main(string[] args)\n    {\n        DynamicArray&lt;int&gt; arr = new DynamicArray&lt;int&gt;(10);\n        for(int i = 1; i &lt; 15; i++)\n        {\n            arr.AddFirst(i);\n        }\n        arr.AddLast(66);\n        arr.Add(2,10);\n\n        Console.WriteLine(arr);\n        Console.WriteLine(arr.GetFirst());\n        Console.WriteLine(arr.GetLast());\n        Console.WriteLine(arr.Get(3));\n        arr.Set(4,100);\n        Console.WriteLine(arr);\n        arr.RemoveAt(4);\n        Console.WriteLine(arr); \n        Console.ReadKey(true);\n    }\n}\n<\/code><\/pre>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_598d4979434be73f67d496a1fd295b90.jpg\"><img decoding=\"async\" layer-src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_598d4979434be73f67d496a1fd295b90.jpg\" src=\"https:\/\/www.blinkedu.cn\/wp-content\/uploads\/2020\/05\/wp_editor_md_598d4979434be73f67d496a1fd295b90.jpg\" alt=\"\u300a\u6570\u636e\u7ed3\u6784\uff1a\u52a8\u6001\u6570\u7ec4\u300b\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6570\u7ec4\u662f\u6211\u4eec\u7ecf\u5e38\u7528\u5230\u7684\u6570\u636e\u7ed3\u6784\uff0c\u521b\u5efa\u6570\u7ec4\u65f6\uff0c\u6211\u4eec\u9700\u8981\u5b9a\u4e49\u6570\u7ec4\u7684\u957f\u5ea6\uff0c\u8ba1\u7b97\u673a\u4f1a\u5728\u5185\u5b58\u4e2d\u5f00\u8f9f\u5bf9\u5e94\u957f\u5ea6\u7684\u4e00\u6bb5\u8fde\u7eed\u7684\u7a7a\u95f4\u6765\u5b58\u653e\u6570\u7ec4\uff0c\u6240\u4ee5\u4e00\u822c\u6570\u7ec4\u7684\u957f\u5ea6\u662f\u56fa\u5b9a\u7684\uff0c\u4f46\u662f\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u4e0d\u80fd\u786e\u5b9a\u6570\u7ec4\u7684\u957f\u5ea6\uff0c\u6240\u4ee5\u56fa\u5b9a\u957f\u5ea6\u7684\u6570\u7ec4\u5c31\u4e0d\u592a\u65b9\u4fbf\u4e86\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u50cfC#\uff0cJava\u7b49\u8bed\u8a00\u90fd\u63d0\u4f9b\u4e86ArrayList\u4f9b\u6211\u4eec\u4f7f\u7528\u3002 \u4e0b\u9762\u4f7f\u7528C#\u5bf9\u539f\u751f\u6570\u7ec4\u8fdb\u884c\u5c01\u88c5\uff0c\u5b9e\u73b0\u4e86\u4e00\u4e2a\u2026\u2026<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-17"],"_links":{"self":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/156"}],"collection":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":1,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"predecessor-version":[{"id":157,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/posts\/156\/revisions\/157"}],"wp:attachment":[{"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blinkedu.cn\/index.php\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}