数组和集合的区别

       所谓数组,是有序的元素序列,在C#语言中,数组可以存放任意多个同类型数据,但是一个数组在创建后,它的长度将固定不变,不能增加、也不能减少数据,这就是它的定长性。所有就有了更灵活的集合,集合能够保存的数据不定长,可以在程序执行的过程中,不断的发生变化,任意增加、或减少、或修改。在功能上,数组能实现的所有功能,集合都能实现,反之则不行。

 

 

 

   在声明与赋值方面:

            数组声明:数据类型[] 变量名     例如:

int[] numbers =new int[5];    //定义了一个numbers变量,它是一个数组可以存放5个int类型的数据

         集合声明:List<数据类型>变量名;     例如:

List<int> nums=new List<int>();

              集合还可以任意添加、删除、修改元素,实现如下:

//添加元素:变量名.Add(要添加的数据);
List<int> nums=new List<int>{3,5,7};
nums.Add(3);
 
//插入元素:变量名.Insert(索引,要插入的数据);
List<int> nums=new List<int>{3,5,7};
nums.Insert(1,10);
 
//删除元素:变量名.RemoveAt(索引);   -->删除指定索引位置的元素
              //变量名.Remove(数据);  -->删除集合中与填写的数据相同的第一个匹配项
List<int> nums=new List<int>{1,1,2,3,5};
nums.RemoveAt(2);              //删除索引为2的元素
nums.Remove(1);                 //删除与数据1相同的第一个元素
 
//修改元素:变量名[索引]=值;
 
//获取元素数量(获取集合长度):变量名.Count

  示例1:数组分析器

  Console.Write("请输入数组的长度:");
            int len = int.Parse(Console.ReadLine());
            int[] nums = new int[len];
            #region  给数组赋值
            for (int i=0;i<len;i++)            //给数组赋值
            {
                 Console.Write("请输入数组的第"+(i+1)+"项:");
                 nums[i] = int.Parse(Console.ReadLine());
            }
            Console.Clear();
#endregion
            #region 对数组进行排序并输出
            Console.WriteLine("您输入的数字排序后如下:");     //对数组进行排序并输出
            for (int i = 0; i < len; i++)     
            {
                for (int j = i + 1; j < len; j++)
                {
                    if (nums[i] > nums[j])
                    {
                        int temp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = temp;
                    }
                }
                Console.Write(nums[i]+"\t");
            }
            Console.WriteLine();
            #endregion
            #region 判断奇数并输出
            Console.WriteLine("其中,以下数字是奇数:");   //判断奇数并输出
            for (int i = 0; i < len; i++)
            {
                if (nums[i] % 2 != 0)
                {
                    Console.Write(nums[i]+"\t");
                }
            }
            Console.WriteLine();
            #endregion
            #region  判断质数并输出
            Console.WriteLine("以下数字是质数:");       //判断质数并输出
            bool isFind=true;
            for (int i = 0; i < len; i++)
            {
                for (int j = 2; j < nums[i]; j++)
                {
                    if (nums[i] % j == 0)
                    {
                        isFind = false;
                        break;
                    }
                }
                if(isFind)
                Console.Write(nums[i]+"\t");
                isFind = true;
            }
            #endregion
            Console.ReadLine();

  示例2:集合管理器

List<int> arrays = new List<int>();
           while (true)                   //无限循环
           {
               Console.WriteLine("集合中现有内容如下:");     Console.WriteLine("===============================================");
               if (arrays.Count == 0)                //当集合里没有值的时候
               {
                   Console.WriteLine("集合中没有元素");
               }
               else
               {
                   foreach (int array in arrays)
                   {
                       Console.Write(array + "\t");          //遍历,显示集合的值
                   }
                   Console.WriteLine();
               }   Console.WriteLine("===============================================");
               Console.WriteLine("1.添加数据");          //获取用户输入
               Console.WriteLine("2.删除数据");
               Console.WriteLine("3.修改数据");
               Console.WriteLine("4.升序排序");
               Console.WriteLine("0.退出程序");
               Console.Write("请选择(0-4):");
               string input = Console.ReadLine();
               if (input == "0")                                //用户输入0,则推出程序
               {
                   break;
               }
               else if (input == "1")                     //用户输入1,则添加数字
               {
                   Console.Write("请输入要添加的数字:");
                   arrays.Add( int.Parse(Console.ReadLine()));
               }
               else if (input == "2")               //用户输入2,则删除数字
               {
                   if (arrays.Count == 0)
                   {
                       Console.Write("集合中没有可删除的数据,按回车继续");
                       Console.ReadLine();
                   }
                   else
                   {
                       Console.WriteLine("请输入你要删除的数据(只会删除第一个匹配项):");
                       arrays.Remove(int.Parse(Console.ReadLine()));
                   }
               }
               else if (input == "3")         //用户输入3,则修改数字
               {
                   if (arrays.Count == 0)
                   {
                       Console.Write("集合中没有任何数据可以修改,按回车键继续");
                       Console.ReadLine();
                   }
                   else
                   {
                       Console.Write("请输入要删除的下标0-" + (arrays.Count - 1) + ":");
                       int index = int.Parse(Console.ReadLine());
                       if (index > (arrays.Count - 1))
                       {
                           Console.Write("输入错误,下标超出范围,按回车键继续");
                           Console.WriteLine();
                       }
                       else
                       {
                           Console.Write("请输入新的数据:");
                           arrays[index] = int.Parse(Console.ReadLine());
                       }
                   }
               }
               else if (input == "4")                 //用户输入4,则排序
               {
                   if (arrays.Count == 0)
                   {
                       Console.Write("集合中没有元素,回车继续");
                       Console.ReadLine();
                   }
                   for (int i = 0; i < arrays.Count; i++)
                   {
                       for (int j = i + 1; j < arrays.Count; j++)
                       {
                           if (arrays[i] > arrays[j])
                           {
                               int temp = arrays[i];
                               arrays[i] = arrays[j];
                               arrays[j] = temp;
                           }
                       }
                   }
               }
               Console.Clear();                  //每一个循环结束后清屏

  

posted @ 2019-10-15 15:49  sohaihr  阅读(533)  评论(0编辑  收藏  举报