这段代码演示了System.Collections.Generic的各容器类的用法,包括:Dictionary,KeyValuePair,SortedDictionary,SortedList,HashSet,SortedSet,List,Queue,Stack等类的用法
System.Collections.Generic.Dictionary<>; //键/值对集合 System.Collections.Generic.KeyValuePair<>; //键/值对结构, 作为 Dictionary<> 的一个元素存在 System.Collections.Generic.SortedDictionary<>; //相当于 Key 能自动排序 Dictionary<> System.Collections.Generic.SortedList<>; //和 SortedDictionary<> 功能相似, 但内部算法不同, 其 Keys、Values 可通过索引访问 System.Collections.Generic.HashSet<>; //无序、无重复的元素集合 System.Collections.Generic.SortedSet<>; //相当于能自动排序的 HashSet<> System.Collections.Generic.List<>; //相当于泛型的 ArrayList, 元素可重复、可排序、可插入、可索引访问 System.Collections.Generic.Queue<>; //队列, 先进先出 System.Collections.Generic.Stack<>; //堆栈, 后进先出 System.Collections.Generic.LinkedList<>; //双向链表 System.Collections.Generic.LinkedListNode<>; //LinkedList<> 的节点 System.Collections.Generic.SynchronizedCollection<>; //线程安全的集合 System.Collections.Generic.SynchronizedReadOnlyCollection<>; //线程安全的只读集合 System.Collections.Generic.SynchronizedKeyedCollection<>; //线程安全的键/值集合 Dictionary<>、KeyValuePair<>: protected void Button1_Click(object sender, EventArgs e) { Dictionary<string, int> dict = new Dictionary<string, int>(); dict.Add("K1", 123); dict["K2"] = 456; dict.Add("K3", 789); string str = ""; foreach (KeyValuePair<string, int> k in dict) { str += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-123; K2-456; K3-789; } TextBox1.Text = str; } SortedDictionary<>: protected void Button1_Click(object sender, EventArgs e) { SortedDictionary<string, int> dict = new SortedDictionary<string, int>(); dict.Add("K3", 333); dict["K1"] = 111; dict.Add("K2", 222); SortedDictionary<string, int>.KeyCollection ks = dict.Keys; SortedDictionary<string, int>.ValueCollection vs = dict.Values; string s1, s2, s3; s1 = s2 = s3 = ""; foreach (KeyValuePair<string, int> k in dict) { s1 += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-111; K2-222; K3-333; } foreach (string s in ks) { s2 += s + "; "; } //K1; K2; K3; foreach (int n in vs) { s3 += n.ToString() + "; "; } //111; 222; 333; TextBox1.Text = s1 + "\n" + s2 + "\n" + s3; } SortedList<>: protected void Button1_Click(object sender, EventArgs e) { SortedList<string, int> dict = new SortedList<string, int>(); dict.Add("K3", 333); dict["K1"] = 111; dict.Add("K2", 222); string s1, s2, s3; s1 = s2 = s3 = ""; foreach (KeyValuePair<string, int> k in dict) { s1 += string.Format("{0}-{1}; ", k.Key, k.Value); //K1-111; K2-222; K3-333; } s2 = dict.Keys[0]; //K1 s3 = dict.Values[0].ToString(); //111 TextBox1.Text = s1 + "\n" + s2 + "\n" + s3; } HashSet<>、SortedSet<>: protected void Button1_Click(object sender, EventArgs e) { HashSet<string> hs = new HashSet<string>(); hs.Add("ccc"); hs.Add("bbb"); hs.Add("aaa"); SortedSet<string> ss = new SortedSet<string>(); ss.Add("ccc"); ss.Add("bbb"); ss.Add("aaa"); string s1 = "", s2 = ""; foreach (string s in hs) { s1 += s + " "; } //ccc bbb aaa foreach (string s in ss) { s2 += s + " "; } //aaa bbb ccc TextBox1.Text = s1 + "\n" + s2; } List<>: protected void Button1_Click(object sender, EventArgs e) { List<int> list = new List<int>(); list.Add(11); list.Add(22); list.Insert(0, 33); string s1, s2 = "", s3, s4 = ""; s1 = list[0].ToString(); //33 for (int i = 0; i < list.Count; i++) { s2 += list[i].ToString() + " "; } //33 11 22 list.Sort(); s3 = list[0].ToString(); //11 foreach (int n in list) { s4 += n.ToString() + " "; } //11 22 33 TextBox1.Text = s1 + "\n" + s2 + "\n" + s3 + "\n" + s4; } LinkedList<>、LinkedListNode<>: protected void Button1_Click(object sender, EventArgs e) { LinkedList<string> list = new LinkedList<string>(); list.AddFirst("aaa"); list.AddLast("bbb"); list.AddFirst("ccc"); list.AddAfter(list.First, "ddd"); list.AddBefore(list.Last, "eee"); string s1 = "", s2 = "", s3 = "", s4 = "", s5 = ""; foreach (string s in list) { s1 += s + " "; } //ccc ddd aaa eee bbb LinkedListNode<string> node = list.First; s2 = node.Value.ToString(); //ccc node = node.Next; s3 = node.Value.ToString(); //ddd node = list.Last.Previous.Previous; s4 = node.Value.ToString(); //aaa list.Remove("eee"); list.RemoveFirst(); list.RemoveLast(); node = list.First; while (node != null) { s5 += node.Value.ToString() + " "; //ddd aaa node = node.Next; } TextBox1.Text = s1 + "\n" + s2 + "\n" + s3 + "\n" + s4 + "\n" + s5; }