zoukankan      html  css  js  c++  java
  • C# 集合及练习题目

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

    集合和数组是异同:

    相同点:

      (1)两者都实现了IListICollectionIEnumerable接口

      (2)两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始

    不同点:

      (1)ArrayList是集合,而Array是数组

      (2)ArrayList是具体类,Array是抽象类

      (3)数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量

      (4)获取数组的元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性

      (5)数组可以有多维,而ArrayList只能是一维。

    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();//初始化

    al.Add(2);//添加任何类型

    al.Add("2");
    al.Add("hello");
    al.Add(true);
    al[3] = "你好";

    al.Clear(); 移除所有元素
    ArrayList al1 = new ArrayList();
    al1 = (ArrayList)al.Clone();//克隆

    Console.WriteLine(al1.Contains("2"));判断是否包含

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

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

    al.Insert(2,"Hello");插入某个索引位置某个元素

    al.Remove("hello");移除某个第一次出现的元素

    al.Sort();排序 ,升序

    al.Reverse();翻转整个集合

    练习:

                //输入班级人数,输入每个人的姓名、语数英成绩进入集合
                //求语文的总分,数学的平均分,
                //英语的最高分的人的姓名及所有科目的分数(冒泡排序)
                //0 姓名 4 8 12
                //1 语文成绩5 9 13
                //2 数学成绩6 10 14
                //3 英语成绩7 11 15 (数字为索引号)

                Console.Write("请输入班级人数:");
                int n = int.Parse(Console.ReadLine());
                double yu = 0;
                double shu = 0;
                ArrayList al = new ArrayList();
                for (int i = 0; i < n; i++)
                {
                    Console.Write("请输入第{0}个人的姓名:", i + 1);
                    al.Add(Console.ReadLine());
                    Console.Write("请输入第{0}个人的语文成绩:", i + 1);
                    al.Add(double.Parse(Console.ReadLine()));
                    yu += double.Parse(al[al.Count - 1].ToString());
                    Console.Write("请输入第{0}个人的数学成绩:", i + 1);
                    al.Add(double.Parse(Console.ReadLine()));
                    shu += double.Parse(al[al.Count - 1].ToString());
                    Console.Write("请输入第{0}个人的英语成绩:", i + 1);
                    al.Add(double.Parse(Console.ReadLine()));
                }
                Console.WriteLine("所有信息输入完毕,请按回车键继续!");
                Console.ReadLine();
                Console.WriteLine("语文的总分是:" + yu);
                Console.WriteLine("数学的平均分是:" + (shu / n));

                for (int i = 3; i < 4 * n - 1; i += 4)
                {
                    for (int j = i; j < 4 * n - 4; j += 4)
                    {
                        if (double.Parse(al[i].ToString()) < double.Parse(al[j + 4].ToString()))
                        {
                            //换姓名
                            object zhong = al[i - 3];
                            al[i - 3] = al[j + 1];
                            al[j + 1] = zhong;
                            //换语文
                            zhong = al[i - 2];
                            al[i - 2] = al[j + 2];
                            al[j + 2] = zhong;
                            //换数学
                            zhong = al[i - 1];
                            al[i - 1] = al[j + 3];
                            al[j + 3] = zhong;
                            //换英语
                            zhong = al[i];
                            al[i] = al[j + 4];
                            al[j + 4] = zhong;
                        }
                    }
                }
                Console.WriteLine("英语最高分的学生是{0},英语分数是{1},语文分数是{2},数学分数{3}", al[0], al[3], al[1], al[2]);
                Console.ReadLine();

  • 相关阅读:
    ETL高级教程学习笔记
    Silverlight for BI (step 1)对这个技术与BI可行性的初步技术分析
    再次留个纪念
    SQLServer2008BI新特性学习笔记
    Lucene.NET 2.0示例代码
    [转]ADO.NET中sqlserver和oracle的参数格式
    金山毒霸2008公测版在VISTA下发生的一个错误
    ZedGraph下Web中显示图形笔记
    信息收集的一些感悟
    个人比较看好的Silverlight 2 beta1里的东西
  • 原文地址:https://www.cnblogs.com/hcx999/p/5715039.html
Copyright © 2011-2022 走看看