第5章 数组和集合
ArrayList类
1、ArrayList类
2、ArrayList元素的添加 3、ArrayList元素的删除 4、ArrayList的遍历
ArrayList类
ArrayList类位于System.Collections命名空间下,它可以动态地添加和删除元素。可以将ArrayList类看 做扩充了功能的数组,但它并不等同于数组。 与数组相比,ArrayList类为开发人员提供了以下功能: •数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充。 •ArrayList提供添加、删除和插入某一范围元素的方法,但在数组中,只能一次获取或设置一个元素的 值。 •ArrayList提供将只读和固定大小包装返回到集合的方法,而数组不提供。 •ArrayList只能是一维形式,而数组可以是多维的。 (1)默认的构造器 ArrayList List = new ArrayList(); for (int i = 0; i < 10; i++) //给ArrayList对象添加10个int元素 List.Add(i); (2)用一个ICollection对象来构造,并将该集合的元素添加到ArrayList中 ArrayList List = new ArrayList(arryName); (3)用指定的大小初始化内部的数组 ArrayList List = new ArrayList(n);
【3-1】删除数组元素后改变其长度
本实验演示如何在删除数组元素后改变其长度,运行本实例,首先 单击“随机生成数组”按钮,生成一个数组;然后分别输入开始删除的 索引和要删除的元素个数;最后,单击“确定”按钮,从生成的数组的 指定索引处删除指定的元素个数,从而生成一个新的数组。
【3-2】向班级集合中添加学信息
属 性 说 明 Capacity Count IsFixedSize IsReadOnly IsSynchronized Item 获取或设置ArrayList可包含的元素数 获取ArrayList中实际包含的元素数 获取一个值,该值指示ArrayList是否具有固定大小 获取一个值,该值指示ArrayList是否为只读 获取一个值,该值指示是否同步对ArrayList的访问 获取或设置指定索引处的元素
二维数组的使用
需要存储表格的数据时,可以使用二维数组。如图所示举例说明了 4行3列 的二维数组的存储结构
数组索引
动态二维数组的声明及使用
数组的基本操作
1、数组的遍历
2、添加/删除数组元素 3、对数组进行排序
数组的遍历
使用foreach语句可以实现数组的遍历功能,开发人员可以用foreach语句访 问数组中的每个元素而不需要确切地知道每个元素的索引号。 例如:
集合在程序开发中经常用到,比如可以将学生信息、商品信息等 存储到集合中,以便随时更新。本实例将使用集合存储学生信息。
添加/删除数组元素
添加/删除数组元素就是在数组中的指定位置对数组元素进行添加 和删除,添加数组元素一般是通过使用ArrayList类实现,该类将在后 面的小节中进行详细讲解。可以利用数组的索引号对数组元素进行 删除操作,但这种方法不能够真正地实现对数组元素的删除,一般 不推荐使用。
int[] arr = new int[] { 1, 3, 5, 7, 9 }; //删除数组中的第二个元素 int n=1; for (int i = n; i < arr.Length - 1 ; i++) arr[i] = arr[i + 1];
SyncRoot
获取可用于同步ArrayList访问的对象
ArrayList元素的添加
1.Add方法 该方法用来将对象添加到ArrayList集合的结尾处,其语法格式如下。
public virtual int Add (Object value)
其中: value 表示要添加到 ArrayList 的末尾处的 Object ,该值可以为空引 用。返回值为ArrayList索引,已在此处添加了value。 ArrayList List = new ArrayList(arr); List.Add(100); 2.Insert方法 该方法用来将元素插入ArrayList集合的指定索引处,其语法格式如下。 public virtual void Insert (int index,Object value) 其中:index表示从零开始的索引,应在该位置插入value。Value表示要插 入的Object,该值可以为空引用。 List.Insert(8,88);
例5.5
对数组进行排序
排序是编程中最常用的算法之一,排序的方法有很多种,可以用遍历的方法对数组 进行排序,也可以用Array类的Sort方法和Reverse方法对数组进行排序。 C#中提供了用于对数组进行排序的方法Array.Sort和Array.Reverse,其中,Array.Sort方法 用于对一维Array数组中的元素进行排序,Array.Reverse方法用于反转一维Array数组或 部分Array数组中元素的顺序。 例如,下面使用Array.Sort方法对数组中的元素进行从小到大的排序。代码如下: int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 }; Array.Sort(arr); //对数组元素排序 例如,定义一个数组arr,然后使用Array类对其进行排序。代码如下: int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 }; Array. Reverse(arr); //对数组元素反向排序
一维数组的声明(2)
可以在声明数组时将其初始化,并且初始化的值为用户自定义的值。 例如,声明一个string类型的一维数组character,并且初始化其中的元素,代码如下。 string []character=new string[3]{color,size,shape}; 可以声明一个数组变量时不对其初始化,但在对数组初始化时必须使用new运算符。 例如,声明一个int类型的一维数组arr,然后使用new运算符对其进行初始化,代码如下。 int[] arr; arr = new int[] { 1, 3, 4, 5 }; 实际上,初始化数组时可以省略new运算符和数组的长度。编译器将根据初始值的数量 来计算数组长度,并创建数组。 例如,在声明一维数组arr时,不使用new运算符,直接对该数组进行初始化,代码如下。 string[] arr={1,3,4,5};
ArrayList的遍历
ArrayList集合的遍历与数组类似,都可以使用foreach语句,下面通 过一个实例说明如何遍历ArrayList集合中的元素。
ArrayList country = new ArrayList(); //创建一个ArrayList类 country.Add("古代中国");//添加元素 country.Add("古代埃及"); //添加元素 country.Add("古代印度"); //添加元素 country.Add("古代巴比伦"); //添加元素 Console.WriteLine("四大文明古国有:"); foreach (string s in country) //遍历输出集合中的元素 Console.WriteLine(s); Console.ReadLine();
第5章 数组和集合
数组概述
数组是包含若干相同类型的变量,这些变量都可以通过索引进行访问。数组中的变量称 为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一
的索引与其相对应,数组的索引从零开始。
数组是通过指定数组的元素类型、数组的秩(维数)及数组每个维度的上限和下限来定 义的,即一个数组的定义需要包含以下几个要素。
ArrayList元素的删除
1.Clear方法 该方法用来从ArrayList中移除所有元素,其语法格式如下。 public virtual void Clear () 2.Remove方法 该方法用来从ArrayList中移除特定对象的第一个匹配项,其语法格式如下。 public virtual void Remove (Object obj) 其中obj表示要从ArrayList移除的Object,该值可以为空引用。 3.RemoveAt方法 该方法用来移除ArrayList的指定索引处的元素,其语法格式如下。 public virtual void RemoveAt (int index) index:要移除的元素的从零开始的索引。 4.RemoveRange方法 该方法用来从ArrayList中移除一定范围的元素,其语法格式如下。 public virtual void RemoveRange (int index,int count) index:要移除的元素的范围从零开始的起始索引。 count:要移除的元素数。
int[] arr = new int[10] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; //采用foreach语句对arr数组进行遍历 foreach (int number in arr) Console.WriteLine(number); Console.ReadLine();
元素类型。
数组的维数 每个维数的上下限。 数组的元素表示某一种确定的类型,如整数或字符串等。数组是一个存储一系列元素位 置的对象。数组中存储位置的数量由数组的秩和边界来确定。数组类型是从抽象基类型 Array派。数组可以分为一维数组、二维数组和多维数组等。
一维数组的声明(1)
一维数组即数组的维数为1。一维数组就是好比一个大型的零件生产公司,而公司中的 各个车间(如车间1、车间2、车间3等,这些名称相当于数组中的索引号)就相当于一维数 组中的各元素,这些车间即可以单独使用,也可以一起使用。 1.声明 type[] arrayName; •type:数组存储数据的数据类型。 •arrayName:数组名称。 例如,声明一个枚举类型的数组arr,代码如下: enum[] arr; 说明:声明数组时可以指定数组长度也可以不指定,而是在使用数组元素前动态指定,但 是数组的长度一经指定就不能更改。 2.初始化 数组的初始化有很多形式,可以通过new运算符创建数组并将数组元素初始化为它们的 默认值。 例如,声明一个int类型的一维数组arr,该数组中包含8个元素,同时对该数组进行初始 化,代码如下。 int[] arr =new int[8]; //arr数组中的每个元素都初始化为0 说明:int类型的数组元素初始化时的默认值为0,bool类型的数组元素初始化时的默认值为 false,引用类型的数组元素初始化时的默认值为null。