数组和集合的区别

       所谓数组,是有序的元素序列,在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 @ 2018-08-03 22:04  Grubber  阅读(2700)  评论(0编辑  收藏  举报