《C#4.0程序设计与项目实战》——C# 中的集合
ArrayList集合类:用于实现可以动态添加元素的数据链表,也就是其大小可以按需进行动态的增加。
View Code
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sample11_6 { class Program { static void Main(string[] args) { // 创建并初始化ArrayList. ArrayList arrayList = new ArrayList(); //添加元素 arrayList.Add("a"); arrayList.Add("b"); arrayList.Add("c"); arrayList.Add("d"); arrayList.Add("e"); Console.WriteLine("初始化后的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 //插入元素 arrayList.Insert(2,"f");//在索引为2处插入信息元素 Console.WriteLine("插入新元素后的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 //排序 arrayList.Sort();//升序排列 Console.WriteLine("按升序排列后的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 //反转顺序 arrayList.Reverse();//反转顺序 Console.WriteLine("反转顺序后的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 //去除元素 arrayList.Remove("a");//去除第一个元素a Console.WriteLine("去除一个元素a后的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 //清空数据链表 arrayList.Clear();//去除第一个元素a Console.WriteLine("清空的ArrayList:"); PrintArrayList(arrayList);//显示当前元素 Console.ReadLine(); } static void PrintArrayList(ArrayList al) { // 显示ArrayList Console.WriteLine(" 元素数: {0}", al.Count); Console.WriteLine(" 可包含的元素数: {0}", al.Capacity); Console.Write(" 元素:"); foreach (var s in al)//遍历 { Console.Write(s + " "); } Console.WriteLine(""); } } }
Queue集合类:表示队列,元素先进先出。
View Code
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; namespace Sample11_7 { class Program { static void Main(string[] args) { Queue qu = new Queue();//创建队列 //入队 qu.Enqueue("第1个元素"); qu.Enqueue("第2个元素"); qu.Enqueue("第3个元素"); qu.Enqueue("第4个元素"); qu.Enqueue("第5个元素"); Console.WriteLine("初始化后的队列:"); PrintInformation(qu); //出队第1个元素 qu.Dequeue(); Console.WriteLine("出队第1个元素后的队列:"); PrintInformation(qu); //出队第2个元素 qu.Dequeue(); Console.WriteLine("出队第2个元素后的队列:"); PrintInformation(qu); //出队第3个元素 qu.Dequeue(); Console.WriteLine("出队第3个元素后的队列:"); PrintInformation(qu); //出队第4个元素 qu.Dequeue(); Console.WriteLine("出队第4个元素后的队列:"); PrintInformation(qu); //出队第5个元素 qu.Dequeue(); Console.WriteLine("出队第5个元素后的队列:"); PrintInformation(qu); Console.ReadLine(); } static void PrintInformation(Queue qu) { Console.WriteLine("队列中的元素数:" + qu.Count); Console.WriteLine("队列中的元素:"); //遍历 foreach (var s in qu) { Console.Write(s + " "); } Console.WriteLine(""); } } }
Stack集合类:表示堆栈,元素先进后出。
View Code
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; namespace Sample11_8 { class Program { static void Main(string[] args) { Stack qu = new Stack();//创建堆栈 //入栈 qu.Push("第1个元素"); qu.Push("第2个元素"); qu.Push("第3个元素"); qu.Push("第4个元素"); qu.Push("第5个元素"); Console.WriteLine("初始化后的堆栈:"); PrintInformation(qu); //出栈第1个元素 qu.Pop(); Console.WriteLine("出队第1个元素后的堆栈:"); PrintInformation(qu); //出栈第2个元素 qu.Pop(); Console.WriteLine("出队第2个元素后的堆栈:"); PrintInformation(qu); //出栈第3个元素 qu.Pop(); Console.WriteLine("出队第3个元素后的堆栈:"); PrintInformation(qu); //出栈第4个元素 qu.Pop(); Console.WriteLine("出队第4个元素后的堆栈:"); PrintInformation(qu); //出栈第5个元素 qu.Pop(); Console.WriteLine("出队第5个元素后的堆栈:"); PrintInformation(qu); Console.ReadLine(); } static void PrintInformation(Stack qu) { Console.WriteLine("堆栈中的元素数:" + qu.Count); Console.WriteLine("堆栈中的元素:"); //遍历 foreach (var s in qu) { Console.Write(s + " "); } Console.WriteLine(""); } } }
Hashtable集合类:表示键值对的集合,这些键值对是根据键的哈希代码进行组织。其中key区分大小写,可以用来快速查找,value用来存储对应于key的值。Hashtable中键值对均为object类型,所以Hashtable可以支持任何类型的键值对。Hashtable的每个元素都是一个可作为DictionaryEntry对象进行访问的键值对。
View Code
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; namespace Sample11_9 { class Program { static void Main(string[] args) { //创建哈希表 Hashtable has = new Hashtable(); //添加元素 Console.WriteLine("初始化后的哈希表:"); has.Add(1,"张晓明"); has.Add(2, "李木子"); has.Add(3, "杜牧"); has.Add(4, "柳如是"); PrintInformation(has); //删除元素 Console.WriteLine("删除指定元素后的哈希表:"); has.Remove(2); PrintInformation(has); Console.ReadLine(); } static void PrintInformation(Hashtable hs) { Console.WriteLine("元素数:" + hs.Count); Console.WriteLine("元素:"); //遍历 foreach (DictionaryEntry s in hs) { Console.WriteLine("键:" + s.Key + " 值: " + s.Value); } Console.WriteLine(""); } } }
SortedList集合类:与哈希表类似,也表示键值对的集合,但这些键值对按键顺序进行排序并且可以按照键和索引访问。索引顺序基于排序顺序。当添加元素时,元素将按照正确的顺序插入,同时索引会相应的进行调整。当移除元素时,索引也会相应的进行调整。因此,当在SortedList中添加或者删除元素时,特定键值对的索引可能发生改变 SortedList的每个元素都是一个可作为DictionaryEntry对象进行访问的键值对。
View Code
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; namespace Sample11_10 { class Program { static void Main(string[] args) { //创建SortedList对象 SortedList sl = new SortedList(); //添加元素 sl["c"] = 41; sl["a"] = 42; sl["d"] = 11; sl["b"] = 13; Console.WriteLine("创建并初始化SortedList对象:"); PrintInformation(sl); //删除 sl.Remove("b"); Console.WriteLine("按键删除一个元素:"); PrintInformation(sl); Console.ReadLine(); } static void PrintInformation(SortedList sl) { Console.WriteLine("元素数:" + sl.Count); Console.WriteLine("元素:"); //遍历 foreach (DictionaryEntry s in sl) { Console.WriteLine("键:" + s.Key + " 值: " + s.Value); } Console.WriteLine("从输出结果可以看出,在SortedList对象中,元素按键升序排列"); Console.WriteLine(""); } } }