数组和集合(C#)

时间:2022-09-03 13:51:01

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();

}

              运行结果:

                            数组和集合(C#)                    

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();

}

             运行结果:

                            数组和集合(C#)                           

              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();

}

}

                 运行结果:

                                  数组和集合(C#)

                                  

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();

}

       运行结果:

                     数组和集合(C#)