集合与泛型集合

集合:
理解为箱子,没有固定长度,可以放任意类型的数据或是变量;
集合也有索引;

ArrayList:
定义:
ArrayList arr = new ArrayList();
添加元素:
arr.Add(a);
arr.Add(b);

取值:
arr[索引];
注意的是,取值时是object类型,需要进行类型转换;

注意:一个集合虽然可以放任意类型,但是我们使用时一般一个集合就放一种类型;

特殊功能:
arr.Add(); 添加元素
arr.Insert(索引,值); 插队,将值插队进到索引的位置
arr.Remove(值); //根据值来删除集合中的元素
arr.RemoveAt(索引); //根据索引来删除集合中的元素
arr.Clear(); //清空集合

arr.Sort(); //从小到大排列集合中的所有元素
arr.Reverse();
arr.Contains(); //查看集合中是否包含某个元素
arr.count; //集合中元素的个数,返回一个int类型

-------------------------------------------------------------
练习题:
请输入学生个数:
请输入第1个学生的姓名:
请输入第1个学生的性别:
请输入第1个学生的年龄:
请输入第1个学生的成绩:
...
n
********************************
第1个学生的姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
...
n

            练习题:
            请输入学生个数:
            请输入第1个学生的姓名:
            请输入第1个学生的性别:
            请输入第1个学生的年龄:
            请输入第1个学生的成绩:
            ...
            n
            ********************************
            第1个学生的姓名:xxx,性别:xxx,年龄:xxx,成绩:xxx。
            ...
            n

            Console.Write("请输入学生个数:");
            int gs = Convert.ToInt32(Console.ReadLine());
            ArrayList a = new ArrayList();
            ArrayList b = new ArrayList();
            ArrayList c = new ArrayList();
            ArrayList d = new ArrayList();
            decimal end = 0m;
            for (int i = 0; i < gs; i++)
            {
                Console.Write("请输入第" + (i + 1) + "个学生姓名:");
                string xm = Console.ReadLine();

                Console.Write("请输入第" + (i + 1) + "个学生性别:");
                string xb = Console.ReadLine();

                Console.Write("请输入第" + (i + 1) + "个学生年龄:");
                int nl = Convert.ToInt32(Console.ReadLine());

                Console.Write("请输入第" + (i + 1) + "个学生成绩:");
                decimal cj = Convert.ToDecimal(Console.ReadLine());

                a.Add(xm);
                b.Add(xb);
                c.Add(nl);
                d.Add(cj);
                end += cj;
            }
            Console.WriteLine("**************************************************");
            for (int j = 0; j < gs; j++)
            {
                Console.WriteLine("" + (j + 1) + "个学生的姓名:" + a[j] + ",性别:" + b[j] + ",年龄:" + c[j] + ",成绩:" + d[j] + "");
            }
            Console.WriteLine("总分是:" + end + "平均分是:" + (end / gs) + "");
            Console.ReadKey();


-------------------------------------------------------------
特殊集合:

Queue 队列集合
定义:
Queue qq = new Queue();
添加元素:
Enqueue("值"/变量);
取值:
Dequeue(); //取第一个进去的值,并在集合中删除掉
Peek(); //取第一进去的值给你看看,不会在集合中删除
-------------------------------------------------------------
Stack 栈桥集合
定义:
Stack ss = new Stack();
添加元素:
ss.Push("值"/变量);
取值:
ss.Pop(); //先进去的后出来,取到的是最后一个进去的,并在集合中删除掉
ss.Peek(); //取最后一个进去的,拿出来给你看看,不会在集合中删除掉
-------------------------------------------------------------
Hashtable:哈希表集合
键值对, 一个建对应一个值;
定义:
Hashtable ha = new Hashtable();
添加元素:
Add(key,value); //key键,用户自定义索引,为object类型
//value值,当前这个索引所对应的内容
取值:
ha[key]; //根据用户自定义索引来取出相对应的内容

遍历:
foreach (string i in ha.Keys) //可以单独遍历键
{
Console.WriteLine(i);
}

foreach (string i in ha.Values) //可以单独遍历值
{
Console.WriteLine(i);
}
-------------------------------------------------------------
泛型集合:
List<类型> li = new List<类型>();

li.Add(同一类型的值或变量);

li[索引]

 

posted @ 2016-05-29 19:56  露西&哈特菲利亚  阅读(203)  评论(0编辑  收藏  举报