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)数据操作是类型安全的且不存在装箱和拆箱操作,因此效率较高。

转载于:https://www.cnblogs.com/ICanSoft/p/4623117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值