• C#集合及特殊集合


     1集合的基本信息

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

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

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

    2 ArrayList与Array的区别

    相同点:

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

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

    不同点:

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

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

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

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

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

    集合例题:

         //输入班级人数,然后输入每个人的姓名,语文、数学、英语成绩,求语文的总分,数学的平均分,英语的最高分(并且打印出是哪个学生)。

    Console.Write("请输入班级人数:");
    int n = int.Parse(Console.ReadLine());
    ArrayList rs = new ArrayList();
    double sumyw = 0;
    double sumsx = 0;
    for (int i = 0; i < n; i++)
    {
    Console.Write("请输入您的姓名:");
    rs.Add(Console.ReadLine());
    Console.Write("请输入您的语文成绩:");
    rs.Add(double.Parse(Console.ReadLine()));
    sumyw += double.Parse(rs[rs.Count - 1].ToString());
    Console.Write("请输入您的数学成绩:");
    rs.Add(double.Parse(Console.ReadLine()));
    sumsx += double.Parse(rs[rs.Count - 1].ToString());
    Console.Write("请输入您的英语成绩:");
    rs.Add(Console.ReadLine());
    }
    Console.WriteLine("语文成绩的总分是:" + sumyw);
    Console.WriteLine("数学成绩的平均分是:" + sumsx / n);
    for (int i = 3; i < 4 * n - 1; i += 4)
    {
    for (int j = i; j < 4 * n - 4; j += 4)
    {
    if (double.Parse(rs[i].ToString()) < double.Parse(rs[j + 4].ToString()))
    {
    object zhong = rs[i - 3];
    rs[i - 3] = rs[j + 1];
    rs[j + 1] = zhong;
    zhong = rs[i - 2];
    rs[i - 2] = rs[j + 2];
    rs[j + 2] = zhong;
    zhong = rs[i - 1];
    rs[i - 1] = rs[j + 3];
    rs[j + 3] = zhong;
    zhong = rs[i];
    rs[i] = rs[j + 4];
    rs[j + 4] = zhong;
    }
    }
    Console.WriteLine("英语最高分的学生是{0},最高分是{1}。", rs[0], rs[3]);
    }
    Console.ReadLine();

    3 特殊集合

    //特殊集合


    //stack 先进后出,一个一个赋值,一个一个取值

    Stack ss = new Stack();
    ss.Push(1);
    ss.Push(2);
    ss.Push(3);
    ss.Push(4);
    ss.Push(5);
    //取个数
    Console.WriteLine(ss.Count);
    //弹出
    Console.WriteLine(ss.Pop());
    //单纯查看 不弹出
    Console.WriteLine(ss.Peek());
    foreach (int aa in ss)
    {
    Console.WriteLine(aa);
    }
    //清空结合
    ss.Clear();
    Console.ReadLine();

     //队列集合

    //先进先出,一个个取值、赋值
    Queue que = new Queue();
    que.Enqueue(2);
    que.Enqueue(3);
    que.Enqueue(4);
    que.Enqueue(5);
    que.Enqueue(6);
    //移除
    que.Dequeue();
    //个数
    Console.WriteLine(que.Count);

    foreach (int aa in que)
    {
    Console.WriteLine(aa);
    }
    Console.ReadLine();

    ////哈希表
    ////先进后出,一个个赋值,只能一个个取值
    Hashtable ht = new Hashtable();
    ht.Add(1, "可口可乐");
    ht.Add(2, "雪碧");
    ht.Add(3, "百事可乐");
    ht.Add(4, "芬达");
    ht.Add(5, "美年达");
    //移除(某个key值得位置的元素)
    ht.Remove(3);
    //判断是否包含
    Console.WriteLine(ht.Contains(5));
    Console.WriteLine(ht.Count);
    foreach (int aa in ht.Keys)
    {
    Console.WriteLine(aa);
    }
    foreach (string ss in ht.Values)
    {
    Console.WriteLine(ss);
    }
    //使用枚举类型来读取(表格样式)
    IDictionaryEnumerator ide = ht.GetEnumerator();
    while (ide.MoveNext())
    {
    Console.WriteLine(ide.Key + " " + ide.Value);
    }
    Console.ReadLine();

  • 相关阅读:
    列表元素的删,添,复制
    序列的通用操作
    列排(list)排序
    列表(list)
    str的常用操作
    复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符;在vim中设置tab缩进为4个字符
    Linux上的文件管理类命令都有那些,其中常用的使用方法及相关示例演示
    总结软连接和硬连接区别,并用实例操作
    文件的元信息有那些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
    Linux发行版的系统目录名称命名规则以及用途
  • 原文地址:https://www.cnblogs.com/xtq0313/p/5726365.html
Copyright © 2020-2023  润新知