数组,集合(list,Arraylist)区别

数组,集合(list,Arraylist)区别

本人是一名大学生,在学校运用到i这类知识的时候,一般总是使用数组,但是发现有很多问题数组解决不了。但是其他两种方式也不怎么熟悉作用,也不会使用。三者经常不会区分,而是混为一谈的记忆。所以接下来我会带大家分析一下三者的区别以及作用。
一,首先我们先来看一下数组
数组优点是在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单.
比如:
string[] s=new string[5];//定义初始化长度
s[0]=“1”; s[1]=“2”; s[2]=“3”;//赋值
s[1]=“1”;//修改
此时数组数据为113;

数组的缺点也是主要不用的原因就是数组的长度不可以是动态的,数组使用时必须定义它的长度,所以对于内存资源来说,定义是长度的长或短都是不行的。

二、集合ArrayList
针对数组的主要缺点,ArrayList在声明ArrayList对象时并不需要指定它的长度。它的大小是按照其中存储的数据来动态扩充与收缩的。ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除.比如:

ArrayList list = new ArrayList();
//新增数据
list.Add(“abc”); list.Add(123);
//修改数据
list[2] = 345;
//移除数据
list.RemoveAt(0);
//插入数据
list.Insert(0, “hello world”);

从ArrayList来看,它已经弥补了数组的主要缺点,但是它也有自己的缺点:
当向集合插入不同类型的数据后(ArrayList将数据当作object存储),如果需要同时处理集合中的数据时,必须将数据类型转换处理,以及涉及到装箱和拆箱的操作,也会造成不必要的资源浪费。

提到了装箱与拆箱,以下简单介绍一下:
装箱:就是将数据类型打包存储为object的引用对象。
比如:
int a=1; object b=(object)a;
拆箱:就是将包装好的数据对象,拆成自己想要的类型。

比如:object b=1; int i=(int)b;

三、泛型List
所以根据数组,ArrayList两种缺点又继续推出了泛型List集合。
优点:与集合ArrayList类似且继承IList接口,也是动态扩容或缩容,在声明List集合时必须声明其中所要存储的数据类型,且集合只能存储相应类型,避免了类型转换的问题。

例如:List list=new List();
list.Add(123);
list[0]=111;//修改
list.RemoveAt(0);//移除

如果list.Add(“abc”);//编译器就会报错,避免了类型安全问题与装箱拆箱的性能问题。

List泛型的好处:
  通过允许指定泛型类或方法操作的特定类型,泛型功能将类型安全的任务从本身转移给了编译器,减少了自身对类型安全的检测以及不必要的资源浪费。

总的来说,三者都是存储数据的方式,需要自身根据对应情况,选择适合自己的存储方式,使代码更效率,减少不必要的资源浪费。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值