zoukankan      html  css  js  c++  java
  • 集合

     

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

    System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。

    System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

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

    集合不同于数组,是一组可变数量的元素的组合,这些元素可能共享某些特征,需要以某种操作方式一起进行操作。一般来说,这些元素的类型是相同的。

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

    ArrayList集合

    相同点:

      (1)两者都实现了IList、ICollection、IEnumerable接口;

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

    不同点:

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

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

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

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

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

     

     

     

    ArrayList al = new ArrayList();//初始化
    al.Add(3);
    al.Add(5);
    al.Add(1);
    al.Add(8);
    al.Add(4);

    al[4] = 9;//可以不连续
    查看个数
    Console.WriteLine(al.Count);

    清空集合
    al.Clear();
    克隆集合
    ArrayList al1 = new ArrayList();
    al1 =(ArrayList) al.Clone();//强制转换
    Console.WriteLine(al1[2]);//结果是1
    //判断是否包含某个元素
    Console.WriteLine(al.Contains(6));//显示false 因为共5个数
    //查看第一次出现该元素的索引号 若没有 返回-1
    Console.WriteLine(al.IndexOf(1));//结果是2
    //查看最后一次出现该元素的索引号
    Console.WriteLine(al.LastIndexOf(9));//结果是4
    //在1号索引插入一个4
    al.Insert(1,4);
    Console.WriteLine(al[1]);
    //移除某个元素的第一次出现的值
    al.Remove(4);
    Console.WriteLine(al[1]);//结果是5
    //移除某个索引号上的元素
    al.RemoveAt(3);
    Console.WriteLine(al[3]);

    for (int i = 0; i < al.Count; i++)
    {
    Console.WriteLine(al[i]);
    }
    Console.WriteLine();
    al.Sort();//排序 升序
    for (int i = 0; i < al.Count; i++)
    {
    Console.WriteLine(al[i]);
    }
    Console.WriteLine();
    //改为降序
    al.Reverse();//翻转集合

    Console.ReadLine();

        //遍历集合

                foreach (object aa in al)
                {
                    Console.WriteLine(aa);
                }

                int[] array = new int[] { 2, 3, 4, 6, 7, 8, 9, 2 };

                foreach (int aa in array)//遍历数组

                {//定义一个什么类型的数据在数组或集合里面

                    Console.WriteLine(aa + 2);

                }

    列:  输入人数,输入每一个人的分数,求平均分,并排序,升序
    ArrayList a = new ArrayList();//集合里面所有类型都可以放入
    double m = 0;
    Console.WriteLine("请输入人数:");
    int b = int.Parse(Console.ReadLine());
    for (int i = 0; i < b; i++)
    {
    Console.WriteLine("请输入分数:");
    a.Add(double.Parse(Console.ReadLine()));
    存放时一定要进行数据转换,否则进行排序时会出错
    m += double.Parse(a[i].ToString());
    }
    Console.WriteLine("平均分为:"+(m/b));
    a.Sort();
    Console.Write("最低分为:"+a[0]);
    Console.Write("最高分为:"+a[b-1]);
    Console.ReadLine();

    列:  将每个人的姓名,年龄存入集合
    按照年龄从大到小排列
    姓名也需要排列
    需要知道年龄最大的是谁

    Console.WriteLine("请输入人数:");
    int a = int.Parse(Console.ReadLine());
    ArrayList xm = new ArrayList();
    ArrayList age = new ArrayList();
    ArrayList jh = new ArrayList();
    for (int i = 0; i < a; i++)
    {
    Console.Write("请输入第{0}人的姓名:", i + 1);
    jh.Add(Console.ReadLine());
    Console.Write("请输入第{0}人的年龄:", i + 1);
    jh.Add(Console.ReadLine());
    }

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


    Console.WriteLine();

    for (int i = 1; i < a * 2; i = i + 2)
    {
    for (int j = i; j < a * 2 - 2; j = j + 2)
    {
    if (int.Parse(jh[i].ToString()) < int.Parse(jh[j + 2].ToString()))
    {
    //int huan = 0;
    int huan = int.Parse(jh[i].ToString());
    jh[i] = jh[j + 2];
    jh[j + 2] = huan;
    //string o = "";
    string o = jh[i - 1].ToString();
    jh[i - 1] = jh[j + 1];
    jh[j + 1] = o;
    }
    }
    }
    foreach (object aa in jh)
    {
    Console.WriteLine(aa);
    }//遍历集合
    //Console.WriteLine("年龄最大的为:"+jh[0]+"年龄为:"+jh[1]);
    Console.ReadLine();

    int[] array = new int[] { 2, 3, 4, 6, 7, 8, 9, 2 };
    foreach (int aa in array)//遍历数组
    {//定义一个什么类型的数据在数组或集合里面

    Console.WriteLine(aa + 2);
    }

    Console.ReadLine();

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    使用免费GeoLite2-City.mmdb进行IP信息解析和地理定位
    ElasticSearch及其插件安装
    Elasticsearch是什么?
    flask框架知识点梳理
    paramiko模块和gitpython模块的使用
    go函数和包
    xadmin的安装和基本使用方法
    Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
    VS2015 Update2中有关cordova和xamarin安装的问题
    Win10 UWP开发系列:实现Master/Detail布局
  • 原文地址:https://www.cnblogs.com/yp11/p/5813904.html
Copyright © 2011-2022 走看看