2016-03-21集合泛型集合、队列和栈

来源:互联网 发布:缎面连衣裙淘宝 编辑:程序博客网 时间:2024/06/06 14:09

集合

ArrayList

ArrayList 是一个可以动态维护长度的集合
其存储结构可表示为:
索引(下标) 值
0 obj1
1 obj2
2 obj3
…… ……

使用

  • 引入System.Collections命名空间
  • 实例化一个对象
    ArrayList 名称 = new ArrayList()
    示例:
                ArrayList students = new ArrayList();                students.Add(s1);                students.Add(s2);                students.Add(s3);                students.Add(s4);                Console.WriteLine("\n这些是使用集合ArrayList存储输出的");                foreach (Student s in students)                {                    s.SayHi();                }//也可以放着循环中,通过students[i]来访问

Hashtable 哈希表

结构如下:

键 值 键1 值1 键2 值2 键3 值3
            //Hashtable存储信息            Hashtable teachers = new Hashtable();            teachers.Add(t1.Name, t1);            teachers.Add(t2.Name, t2);            teachers.Add(t3.Name, t3);            Console.WriteLine("\n这些是用哈希表存储输出的:");            foreach (string str in teachers.Keys)            {                Teacher s = (Teacher)teachers[str];                s.SayHi();            }

List

  • 引入命名空间
    System.Collections.Generic
  • 使用示例:
            Console.WriteLine("\n这些是用泛型集合List输出的");            List<Student> listStudent = new List<Student>();            listStudent.Add(s1);            listStudent.Add(s2);            listStudent.Add(s3);            listStudent.Add(s4);            for (int i = 0; i < listStudent.Count; i++)            {                listStudent[i].SayHi();            }
  • 说明
    List<类> listStudent = new List<类名>() 之后就只能存储这个类实例化出的对象,不能存储其他类型。

Dictionary<>

Dictionary

            Console.WriteLine("\n 这些是用Dictionary存储输出的:");            Dictionary<int, Teacher> dicTeacher = new Dictionary<int, Teacher>();            dicTeacher.Add(1, t1);            dicTeacher.Add(2, t2);            dicTeacher.Add(3, t3);            foreach (Teacher t in dicTeacher.Values)            {                t.SayHi();            }

队列和栈

  • 栈 Stack与Stack
    1.入栈Push
    2.出栈Pop

  • Queue与Queue
    1.入队Enqueue
    2.出队Dequeue

            //栈 Stack与Stack<T>            Console.WriteLine("\n\n这是存储到栈再输出的结果");            Stack<Student> s0 = new Stack<Student>();            for (int i = 0; i < 4; i++)            {                s0.Push(listStudent[i]);//进栈            }            int scount = s0.Count;            for (int i = 0; i < scount; i++)            {                s0.Pop().SayHi();//出栈            }            //队列 Queue与Queue<T>            Console.WriteLine("");            Queue<Teacher> queT = new Queue<Teacher>();            queT.Enqueue(t1);            queT.Enqueue(t2);            queT.Enqueue(t3);//进入队列            for (int i = 0; i < 3; i++)            {                queT.Dequeue().SayHi();            }
0 0