集合

集合的基本信息:

System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。

一般在新建的项目中,要先添  using System.Collections;

常用的集合为ArrayList类;特殊集合一般会用到Queue队列集合、Stack栈集合还有Hashtable哈希表集合。

集合与数组的区别:数组是连续的、同一类型数据的一块区域,而集合可以是不连续的、多种数据类型的。

集合的索引也是从0开始的

一、ArrayList具体提供的功能:
Count        获取 ArrayList 中实际包含的元素数                     
Add ()          将对象添加到 ArrayList 的结尾处 Clear()          从 ArrayList 中移除所有元素 Clone()         创建 ArrayList 的浅表副本  Contains()        确定某元素是否在 ArrayList 中 IndexOf()            已重载。返回 ArrayList 或它的一部分中某个值的第一个匹配项的从零开始的索引  Insert()         将元素插入 ArrayList 的指定索引处。 可在任意位置插入 LastIndexOf()      已重载。 返回 ArrayList 或它的一部分中某个值的最后一个匹配项的从零开始的索引 Remove()           从 ArrayList 中移除特定对象的第一个匹配项  RemoveAt()          移除 ArrayList 的指定索引处的元素  Sort()             已重载。 对 ArrayList 或它的一部分中的元素进行排序,升序 Reverse()                     翻转整个集合
           ArrayList al = new ArrayList();
            ////add方法才是真的添加
            al.Add(4);
            al.Add(6);
            al.Add(19);
            al.Add(4);
            al.Add(3);
            
            ////在某个索引号上插入某个元素
            //al.Insert(2,"Hello"); 
            //个数
            //Console.WriteLine(al.Count);
            //al[0]这种赋值方式,仅仅适用于修改
            //al[0] = 3;

            //清空集合
            //al.Clear();

            //克隆集合
            //ArrayList al1 = (ArrayList)al.Clone();

            //判断是否包含某个元素
            //bool a = al.Contains(3);
            //Console.WriteLine(a);

            //获取第一次出现该元素的索引号
            //Console.WriteLine(al.IndexOf(4));

            //获取最后一次出现该元素的索引号
            //Console.WriteLine(al.LastIndexOf(4));

            //移除第一个匹配元素
            //al.Remove(4);

            //移除某个索引位置上的元素
            //al.RemoveAt(4);

            //Console.WriteLine(al[0]);
             //数组的定义:数据类型    总长度

            //遍历集合
            //foreach(int aa in al)
            //{
            //    Console.WriteLine(aa);
            //}
            ////排序   升序
            //al.Sort();
            ////遍历集合
            //foreach (int aa in al)
            //{
            //    Console.WriteLine(aa);
            //}
            ////排为降序
            ////翻转集合
            //al.Reverse();
            ////遍历集合
            //foreach (int aa in al)
            //{
            //    Console.WriteLine(aa);
            //}

            //在有不同数据类型的时候需要遍历集合
            //foreach(object aa in al)
            //{
            //    Console.WriteLine(aa);
            //}
用法
二、Stack 集合:
一个一个赋值   一个一个取值 先进后出

count           取集合内元素的个数
push()         将元素一个一个推入集合中
pop()           将元素一个个弹出集合
clear()         清空集合
//Stack st = new Stack();
            ////添加元素
            //st.Push(2);
            //st.Push(6);
            //st.Push(9);
            //st.Push(5);
            //st.Push(1);
            ////个数
            ////Console.WriteLine(st.Count);
            
            ////只要使用一次pop方法,就会从最后一个元素开始排除  弹出
            ////Console.WriteLine(st.Pop());
            ////只想查看不弹出
            ////Console.WriteLine(st.Peek());

            ////遍历集合
            //foreach(int aa in st)
            //{
            //    Console.WriteLine(aa);
            //}

            
            ////Console.WriteLine(st.Count);
用法
三、queue队列集合    
   先进先出
count 取集合内元素的个数
Enqueue 进队列集合
Dequeue 出队列集合
clear 清空集合
//Queue que = new Queue();
            ////添加元素
            //que.Enqueue(5);
            //que.Enqueue(2);
            //que.Enqueue(9);
            //que.Enqueue(8);
            //que.Enqueue(1);
            ////移除一个元素   从头开始
            //que.Dequeue();

            ////个数
            ////Console.WriteLine(que.Count);


            ////遍历集合
            //foreach(int aa in que)
            //{
            //    Console.WriteLine(aa);
            //}
用法
四、HashTable   哈希表集合
 先进后出   一个一个赋值,但是只能一起取值
 Hashtable ht = new Hashtable();
            //添加元素
            ht.Add(1, "张三");
            ht.Add(2, "李四");
            ht.Add(3, "王五");
            ht.Add(4, "赵六");
            ht.Add(5, "冯七");
            ht.Add(6, "钱八");
           
            //读取
            //foreach (object aa in ht.Keys)//单纯的存储key的集合
            //{
            //    Console.WriteLine(aa);
            //}
            //foreach (string bb in ht.Values)
            //{
            //    Console.WriteLine(bb);
            //}


            //使用枚举类型进行读取,排列成表格
            IDictionaryEnumerator ide = ht.GetEnumerator();
            while(ide.MoveNext())
            {
                Console.WriteLine(ide.Key+"	"+ide.Value);
            }
用法
例题:抽奖
输入班级人数、姓名、语文成绩、数学成绩、英语成绩,求语文最高分,数学最低分,英语平均分
 ArrayList al = new ArrayList();
            Console.Write("请输入班级人数:");
            int a = int.Parse(Console.ReadLine());
            for (int i = 0; i < a; i++)
            {
                Console.Write("请输入第" + (i + 1) + "人的姓名");
                al.Add(Console.ReadLine());
                Console.Write("请输入第" + (i + 1) + "人的语文成绩");
                al.Add(Console.ReadLine());
                Console.Write("请输入第" + (i + 1) + "人的数学成绩");
                al.Add(Console.ReadLine());
                Console.Write("请输入第" + (i + 1) + "人的英语成绩");
                al.Add(Console.ReadLine());
            }
            for (int i = 1; i < 4 * a - 3; i += 4)
            {
                for (int j = i + 4; j < 4 * a; j += 4)
                {
                    if (double.Parse(al[i].ToString()) < double.Parse(al[j].ToString()))
                    {
                        object b = al[i];
                        al[i] = al[j];
                        al[j] = b;
                        object b1 = al[i - 1];
                        al[i - 1] = al[j - 1];
                        al[j - 1] = b1;
                        object b2 = al[i + 1];
                        al[i + 1] = al[j + 1];
                        al[j + 1] = b2;
                        object b3 = al[i + 2];
                        al[i + 2] = al[j + 2];
                        al[j + 2] = b3;
                    }
                }
            }
            Console.WriteLine("语文最高分:{0},得分:{1}", al[0], al[1]);
            for (int i = 2; i < 4 * a - 2; i += 4)
            {
                for (int j = i + 4; j < 4 * a; j += 4)
                {
                    if (double.Parse(al[i].ToString()) > double.Parse(al[j].ToString()))
                    {
                        object b = al[i];
                        al[i] = al[j];
                        al[j] = b;
                        object b1 = al[i - 2];
                        al[i - 2] = al[j - 2];
                        al[j - 2] = b1;
                        object b2 = al[i - 1];
                        al[i - 1] = al[j - 1];
                        al[j - 1] = b2;
                        object b3 = al[i + 1];
                        al[i + 1] = al[j + 1];
                        al[j + 1] = b3;
                    }
                }
            }
            Console.WriteLine("数学最低分:{0},得分:{1}", al[0], al[2]);
            double sum = 0;
            for (int i = 3; i < 4 * a; i += 4)
            {
                sum += double.Parse(al[i].ToString());
            }
            Console.WriteLine("英语平均分是:" + sum / a);
            Console.ReadLine();





 


 

 

原文地址:https://www.cnblogs.com/shadow-wolf/p/5966979.html