C# 基础概念系列(一)-- 简述string[]、ArrayList和List的区别


.NET C#基础概念系列(一)-- 简述string[]、ArrayList和List的区别

 简述string[]、ArrayList和List的区别

数组的定义:

  数组是特殊的定长线性表,即线性表中的元素又是一个线性表,n维数组是一种“同构”的数据结构,其中每个数据元素类型相同,结构一致。

数组结构的特点:

  (1)数组分配在一块连续的数据空间上,因此在分配空间时必须确定长度。

  (2)数据元素类型相同。

  (3)数据元素的下标具有上下边界约束且下标有序。

数组的优缺点:

优点:

  (1)数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单,效率高,为o(1)。

  (2)可以使用折半方法查找元素,效率较高。

string[] array = new string[3];

//赋值
array[0] = "a";
array[1] = "b";
array[2] = "c";

//修改
array[2] = "a1";

缺点:

  (1)数组必须在声明的时候指定数组长度和维数,并且在存取数组元素的时候不能越界,越界会造成数据溢出错误。

  (2)插入和删除元素效率比较低,且比较麻烦。

 

ArrayList的定义

  ArrayList是动态数组,是Array的复杂版本,它提供了动态添加和减少元素,实现了ICollection和IList接口,可以灵活设置数组的大小。

ArrayList的特点

  (1)ArrayList数组的长度可以动态指定,其大小可以在初始化时指定,也可以不指定,因此其在托管堆上存放并不一定连续。

  (2)ArrayList数据可以存放不同类型数据(因为它里面存放的都是被装箱了的Object类型,实际上ArrayList内部就是使用"object[] _items;"这样一个私有字段来封装对象的)。

  (3)ArrayList可以在任意位置插入或删除数项。

ArrayList的优缺点

优点:

  (1)初始化时可以不指定长度,并且可以动态插入或删除项,其长度可以动态扩充和收缩。

  (2)存放的数据类型可以是不同类型的数据。

 

ArrayList arrayList = new ArrayList();

//添加
arrayList.Add("a");
arrayList.Add("b");
结果为ab

//插入
arrayList.Insert(0,"cc");
结果为ccab

//移除
//从ArrayList中移除特定对象的第一个匹配项,注意是第一个
arrayList.Remove('c');
结果为cab

//移除ArrayList的指定索引处的元素
arrayList.RemoveAt(0);
结果为ab;

//清除所有元素
arrayList.Clear();

//排序
arrayList.Sort();

//查找
arrayList.IndexOf("a")

缺点:

  (1)ArrayList不是类型安全的,其插入的数据当做Object类型处理,因此在处理数据是可能会报类型不匹配错误。

  (2)由于存在装箱和拆箱操作,会带来很大的性能损耗,所以存取效率低。

 

List的定义

  List是ArrayList的范型等效类,List类也继承了IList接口,其大部分用法与ArrayList相似,最关键的区别是,在声明List集合时需要为其声明List集合内数据的对象类型,往List中插入其它(非声明数据类型)数据类型元素时将会报错,因此其是类型安全的。

数组结构的特点:

  (1)声明时必须指定数据集内元素的数据类型,且数据元素类型必须相同。

  (2)可以动态插入或删除数据元素。

  (3)数据操作是类型安全的且不存在装箱和拆箱操作,因此效率较高。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM