数组和集合(C#)

1. 数组概述

      数组是包含若干相同类型的变量,这些变量都可以通过索引进行访问。数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其对应。

2.  一维数组的声明和使用

 

       2.1 声明:

       基本语法:

Type[]arrayName;

        示例代码:声明一个int类型的一维数组arr

int[] arr;

arr=new int[5]{1,2,3,4,5};  //初始化其中的元素分别为1,2,3,4,5

        2.2 使用:

             示例代码:                   

              static void Main(string[] args)

              {

                  int[] arr ={1,2,3,4,5};     //定义一个一维数组,并为其赋值

                  foreach (int n in arr)       //使用foreach语句循环遍历一维数组中的元素

                       Console.WriteLine("{0}", n + "");

                  Console.ReadLine();

              }

              运行结果:

                                                

3. 二维数组的声明和使用

 

      3.1声明:

       基本语法:           

type[ ,] arrayName;

       示例代码:声明一个两行两列的二维数组并初始化           

  int[ , ]arr=new int[2,2]{{1,2},{3,4}};

       3.2使用

               3.2.1静态二维数组

               示例代码:              

        static void Main(string[] args)

        {

           int[,] arr = new int[2, 2] {{1,2},{3,4}};   //自定义一个二维数组

           Console.Write("数组的行数为:");         

           Console.Write(arr.Rank);              //获得二维数组的行数

           Console.Write("\n");

           Console.Write("数组的列数为:");

           Console.Write(arr.GetUpperBound(arr.Rank-1)+1); //获得数组的列数

           Console.Write("\n");

           for (int i = 0; i < arr.Rank;i++)       //循环输出二维数组中的每个元素

           {

               string str = "";

               for (int j = 0; j <arr.GetUpperBound(arr.Rank - 1) + 1; j++)

               {

                   str = str +Convert.ToString(arr[i, j]) + " ";

               }

               Console.Write(str);

               Console.Write("\n");

            }

           Console.ReadLine();

        }

             运行结果:

                                                       

              3.2.2动态二维数组

                    示例代码:                          

              static void Main(string[] args)

              {

                    Console.Write("请输入动态数组的行数:");

                    int row = Convert.ToInt32(Console.ReadLine());//定义动态数组的行数

                    Console.Write("请输入动态数组的列数:");

                    int col = Convert.ToInt32(Console.ReadLine());//定义动态数组的列数

 

                    int[,] arr = new int[row,col];   //根据定义的行数和列数定义动态数组

                    Console.WriteLine("结果:");

                    for (int i = 0; i< row; i++)

                    {

                         for (int j = 0; j < col; j++)

                         {

                             Console.Write(i+j .ToString()+" ");  //输出动态数组中的元素

                         }

                         Console.WriteLine();

                         Console.ReadLine();

                     }

                }

                 运行结果:

                                 

                                  

4.  数组的基本操作

 

       4.1如何遍历数组

              使用foreach语句可以实现数组的遍历功能。在2.1的示例代码中已有涉及,此处就不举例了。

       4.2 添加/删除数组元素

              可以利用数组的索引号对数组元素进行删除,但是这种方法不能够真正地实现对数组元素的删除,一般不推荐使用。等以后学习了ArrayList类后,可以使用它来实现数组的删除。

       4.3 对数组进行排序(以后会是单独的一章,详细解释)

                  4.3.1 遍历排序法:如冒泡法、直接插入法和选择排序法等。

                  4.3.2 Array类的Sort和Reverse排序法

       4.4数组的合并和拆分

5.  ArrayList类

         ArrayList类相当于一种高级的动态数组,它是Array类的升级版。位于System.Collections命名空间下,可以动态添加和删除元素。

        5.1 声明

             方式一:ArrayList List= new ArrayList();

                              示例代码:          

            ArrayList list=new ArrayList();     //声明一个ArrayList对象

            for (int i=0;i <10;i ++)        //给其添加10个int类型的元素值

                 list .Add (i);


             方式二:ArrayList List=new ArrayList(arrayName);

                             示例代码:               

               int[] arr = new int[] {1,2,3,4,5,6,7,8,9 };  //声明一维数组

               ArrayList list=new ArrayList (arr );    //将一维数组中元素添加到已声明的ArrayList对象中

            方式三:ArrayList List=new ArrayList(n);

                            示例代码:               

            ArrayList list=new ArrayList (10);    //声明一个ArrayList对象

            for (int i=0;i <List.Count;i++)      //给其添加10个int类型的元素值

            list .Add (i);

        5.2使用

                 5.2.1ArrayList元素的添加

                    可以使用ArrayList类提供的Add方法和Insert方法。

                    示例代码:                        

                  //使用Add方法(将对象添加到ArrayList集合的结尾处)

                  int[] arr = new int[] { 1,2, 3, 4, 5, 6 };

                  ArrayList list = newArrayList(arr);   //使用声明的一维数组实例化一个ArrayList对象

                  list.Add(7);                           //为ArrayList对象添加对象

 

                  //使用Insert方法(将对象添加到ArrayList集合的指定索引处)

                  int[] arr2 = new int[] { 1,2, 3, 4, 5, 6 };

                  ArrayList list2 = newArrayList(arr2);   //使用声明的一维数组实例化一个ArrayList对象

                  list.Insert(3,7);             //在ArrayList集合的指定位置添加一个元素

                 5.2.2 ArrayList元素的删除

                  可以使用ArrayList类提供的Clear方法、Remove方法、RemoveAt方法和RemoveRange方法。这几种方法的使用和5.2.1中元素的添加方法类似,只需要更换方法名即可,所以不再举例了。

                    其中,Clear方法用来从ArrayList中移除所有元素;Remove方法从中移除特定对象的第一个匹配项;RemoveAt方法用来移除指定索引处的元素;RemoveRangge方法用来移除一定范围的元素。大家可视情况而选择使用。

                5.2.3 ArrayList元素的查找

                  元素的查找也是类似,可使用Contains方法、Indexof方法和LastIndexOf方法。

6.  Hashtable(哈希表)

        哈希表表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。

        6.1 Hashtable元素的添加      

      Hashtable hashtable=newHashtable();       hashtable.Add(“Sex”,”男”);
        6.2 Hashtable元素的删除   

        hashtable.Remove(“Sex”);

        6.3 Hashtable元素的遍历

             与数组的遍历相似,都可以使用foreach语句,但是由于Hashtable元素是一个键/值对,因此需要使用DictionaryEntry类型来进行遍历。

              示例代码:     

    static void Main(string[] args)

    {

        Hashtable hashtable = new Hashtable();    //实例化Hashtable对象

        hashtable.Add("StuID","110");            //向Hashtable对象添加对象

        hashtable.Add("name","Tom");              

        hashtable.Add("Sex", "男");

        Console.WriteLine("\t键\t值");          

        foreach (DictionaryEntry dicEntry inhashtable)  //遍历Hashtable中的元素

        {

             Console.WriteLine("\t"+dicEntry.Key +"\t"+dicEntry .Value );

        }

        Console.WriteLine();

        Console.ReadLine();

    }

       运行结果:

                    

                     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值