《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("");
        }

    }
}
posted @ 2012-11-17 16:23  .NET~莫愁  阅读(152)  评论(0编辑  收藏  举报