zoukankan      html  css  js  c++  java
  • 集合

    集合的基本信息

         System.Collections         命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
        System.Collections.Generic      命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
         System.Collections.Specialized    命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。
    常用的集合为ArrayList类;特殊

         集合一般会用到Queue队列集合、Stack栈集合还有Hashtable哈希表集合。

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

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

     

    一、ArrayList集合:

     

    ArrayList实现了IList、ICollection、IEnumerable接口

    ArrayList与Array的名字很相似,现在来比较一下两者的异同。

     

     

    相同点:

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

      (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() 翻                      转整个集合

    例:


                输入每个人成绩
                求平均分
                求最高
                求最低
                用集合
                Console.WriteLine("输入人数");
                int a = int.Parse(Console.ReadLine());
                ArrayList fen = new ArrayList(a);
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine("输入第" + (i + 1) + "个人成绩");
                    fen.Add(double.Parse(Console.ReadLine()));
                }
                double sum = 0;
                for (int i = 0; i < a; i++)
                {
                    sum += double.Parse(fen[i].ToString());
                }
                Console.WriteLine(sum / a);
                Console.ReadLine();
                fen.Sort();
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine(fen[i]);
                }
                Console.WriteLine("最小"+fen[0]);
                Console.ReadLine();
                fen.Reverse();
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine(fen[i]);
                }
                Console.WriteLine("最大"+fen[0]);
                Console.ReadLine();

       例:   方法1

     

                输入年龄,姓名
                按年龄从大到小排序
                姓名同年龄一起排序
                Console.WriteLine("输入人数");
                int a = int.Parse(Console.ReadLine());
                ArrayList age = new ArrayList();
                ArrayList name = new ArrayList();
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine("输入第" + (i + 1) + "个人姓名");
                    name.Add(Console.ReadLine());
                }
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine("输入第" + (i + 1) + "个人年龄");
                    age.Add(int.Parse(Console.ReadLine()));
                }

     

                Console.WriteLine();

     

                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine(name[i] + age[i].ToString());
                }
                Console.ReadLine();

     

                for (int i = 0; i < a; i++)
                {
                    for (int j = i; j < a - 1; j++)
                    {
                        if (int.Parse(age[i].ToString()) < int.Parse(age[j + 1].ToString()))
                        {
                            int zhong = (int.Parse(age[i].ToString()));
                            age[i] = age[j + 1];
                            age[j + 1] = zhong;
                            string z = (name[i].ToString());
                            name[i] = name[j + 1];
                            name[j + 1] = z;
                        }
                    }
                }

     

                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine(name[i] + age[i].ToString());
                }
                Console.WriteLine();
                Console.WriteLine(name[0] + age[0].ToString());
                Console.ReadLine();

     

                方法2
                Console.WriteLine("输入人数");
                int a = int.Parse(Console.ReadLine());
                ArrayList zong = new ArrayList();
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine("输入第" + (i + 1) + "个人姓名");
                    zong.Add(Console.ReadLine());
                    Console.WriteLine("输入第" + (i + 1) + "个人年龄");
                    zong.Add(Console.ReadLine());
                }
                for (int i = 1; i < a * 2; i += 2)
                {
                    for (int j = i; j < a * 2 - 2; j += 2)
                    {
                        if (int.Parse(zong[i].ToString()) < int.Parse(zong[j + 2].ToString()))
                        {
                            int zhong = (int.Parse(zong[i].ToString()));
                            zong[i] = zong[j + 2];
                            zong[j + 2] = zhong;
                            string z = (zong[i - 1].ToString());
                            zong[i - 1] = zong[j + 1];
                            zong[j + 1] = z;
                        }
                    }
                }
                Console.WriteLine(zong[0].ToString() + zong[1].ToString());
                Console.ReadLine();

     

  • 相关阅读:
    第11组 Beta冲刺(1/5)
    第11组 Alpha事后诸葛亮
    第11组 Alpha冲刺(6/6)
    第11组 Alpha冲刺(5/6)
    软工实践个人总结
    第11组 Beta版本演示
    第11组 Beta冲刺(5/5)
    第11组 Beta冲刺(4/5)
    第11组 Beta冲刺(3/5)
    第11组 Beta冲刺(2/5)
  • 原文地址:https://www.cnblogs.com/shi2172843/p/5620573.html
Copyright © 2011-2022 走看看