C# 集合
集合的定義網上應該就可以找到很多,所以我列出明確的分別就好
List:固定的型別,不固定長度
Array:任意的型別,固定長度
ArrayList:任意的型別,任意的長度
HashSet:裡面的值不會重複
Queue:先進先出,從屁屁塞進序列
Stack:後進先出,從頭塞進序列
Dictionary:一個key 對應 一個value
除了Array不寫程式碼,以下是各自的程式碼及結果
result:331.3
result:331.3
result:
100
400
300
200
500
result:
100 4
200 3
300 2
400 1
500 0
result:
500 4
400 3
300 2
200 1
100 0
result:
王曉明:80
李小英:70
林大雄:65
孫小美:96
大老千:43
忍太郎:65
List:固定的型別,不固定長度
Array:任意的型別,固定長度
ArrayList:任意的型別,任意的長度
HashSet:裡面的值不會重複
Queue:先進先出,從屁屁塞進序列
Stack:後進先出,從頭塞進序列
Dictionary:一個key 對應 一個value
除了Array不寫程式碼,以下是各自的程式碼及結果
ArrayList:
private void button1_Click(object sender, EventArgs e) { //物件版集合 ArrayList al = new ArrayList(); al.Add(100); al.Add("哭笑不得"); al.Add(50.7); al.Add(new Button()); al.Add("C#.NET"); al.Add(100); al.Add(80.6); StringBuilder sb = new StringBuilder(); double totalSum = 0; for (int i = 0; i < al.Count; i++) { //sb.Append(al[i].ToString()).Append("\r\n"); /* int a; double b; if (int.TryParse(al[i].ToString(), out a)) totalSum += a; else if(double.TryParse(al[i].ToString(), out b)) totalSum += b; */ /* if (al[i].GetType() == Type.GetType("System.Int32")) totalSum += (int)al[i]; else if (al[i].GetType() == Type.GetType("System.Double")) totalSum += (double)al[i]; */ if (al[i] is int) totalSum += (int)al[i]; else if (al[i] is double) totalSum += (double)al[i]; } textBox1.Text = totalSum.ToString(); }
result:331.3
List:
private void button2_Click(object sender, EventArgs e) { //泛型版集合,不是double 的放不進去 Listal = new List (); al.Add(100); //al.Add("哭笑不得"); al.Add(50.7); //al.Add(new Button()); //al.Add("C#.NET"); al.Add(100); al.Add(80.6); double totalSum=0; for (int i = 0; i < al.Count; i++) totalSum += al[i]; textBox1.Text = totalSum.ToString(); }
result:331.3
HashSet:
private void button3_Click(object sender, EventArgs e) { HashSeths = new HashSet (); hs.Add(100); hs.Add(400); hs.Add(300); hs.Add(200); hs.Add(500); hs.Add(200); hs.Add(100); hs.Add(500); StringBuilder sb = new StringBuilder(); foreach (int a in hs) sb.Append(a).Append("\r\n"); textBox1.Text = sb.ToString(); }
result:
100
400
300
200
500
Queue:
private void button4_Click(object sender, EventArgs e) { Queueqq = new Queue (); //先進先出從屁屁塞 qq.Enqueue(100); qq.Enqueue(200); qq.Enqueue(300); qq.Enqueue(400); qq.Enqueue(500); StringBuilder sb = new StringBuilder(); /* foreach (int a in qq) sb.Append(String.Format("{0}\t{1}\r\n", a,qq.Count)); */ //逐一取出 while (qq.Count>0) sb.Append(String.Format("{0}\t{1}\r\n", qq.Dequeue(),qq.Count)); textBox1.Text = sb.ToString(); }
result:
100 4
200 3
300 2
400 1
500 0
Stack:
private void button5_Click(object sender, EventArgs e) { Stackst = new Stack (); //後進先出從頭塞 st.Push(100); st.Push(200); st.Push(300); st.Push(400); st.Push(500); StringBuilder sb = new StringBuilder(); /* foreach (int a in qq) sb.Append(String.Format("{0}\t{1}\r\n", a,qq.Count)); */ while (st.Count > 0) sb.Append(String.Format("{0}\t{1}\r\n", st.Pop(), st.Count)); textBox1.Text = sb.ToString(); }
result:
500 4
400 3
300 2
200 1
100 0
Dictionary:
private void button6_Click(object sender, EventArgs e) { Dictionarydc = new Dictionary (); dc.Add("王曉明", 80); dc.Add("李小英", 75); dc.Add("林大雄", 65); dc.Add("孫小美", 55); dc.Add("大老千", 43); dc.Add("忍太郎", 65); if (dc.ContainsKey("李小英")) dc["李小英"] = 70; else dc.Add("李小英", 70); if (dc.ContainsKey("孫小美")) dc["孫小美"] = 96; else dc.Add("孫小美", 96); //textBox1.Text = dc["孫小美"].ToString(); StringBuilder sb = new StringBuilder(); foreach (KeyValuePair kv in dc) sb.Append(String.Format("{0}:{1}\r\n", kv.Key, kv.Value)); textBox1.Text = sb.ToString(); }/pre>
result:
王曉明:80
李小英:70
林大雄:65
孫小美:96
大老千:43
忍太郎:65
留言
張貼留言