• 集合


    集合的基本信息:

    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();





     


     

     

  • 相关阅读:
    postgreSQL中的case用法说明
    UOJ#749[UNR #6]稳健型选手【贪心,分治,主席树】
    CF1286EFedya the Potter Strikes Back【KMP,RMQ】
    AT2366[AGC012F]Prefix Median【dp】
    P8352[SDOI/SXOI2022]小N的独立集【dp套dp】
    uoj#750[UNR #6]小火车【二分,折半,鸽笼原理】
    AT2382[AGC015D]A or...or B Problem
    UOJ#748[UNR #6]机器人表演【dp】
    CF1427FBoring Card Game【贪心】
    CF1534F2Falling Sand (Hard Version)
  • 原文地址:https://www.cnblogs.com/shadow-wolf/p/5966979.html
Copyright © 2020-2023  润新知