详解数组、ArrayList和List三者的区别

数组的容量是固定的,只能一次获取或设置一个元素的值,ArrayList和List的容量可根据需要自动扩充、修改、删除或插入数据。

数组

数组是在内存中连续存储的,所以索引速度非常快,赋值和修改比较交单。

//声明数组
        string[] str = new string[2];
        //声明数组并赋值
        //string[] str = { "a", "b" };

        //赋值
        str[0] = "a";
        str[1] = "b";

        //修改
        str[1] = "c";

但是数组在声明时需要指定数组的长度,长度过长会造成内存浪费,过短会造成数据溢出,如果声明时不清楚数组的长度就会比较麻烦,另外在数组中插入数据比较麻烦。

ArrayList

ArrayList使用时必须引用using System.Collections;

//声明
        ArrayList arrayList = new ArrayList();

        //新增
        arrayList.Add("a");
        arrayList.Add("b");
        arrayList.Add(123);

        //插入指定索引位置数据
        arrayList.Insert(0, 123);

        //修改指定索引位置数据
        arrayList[2] = 234;

        //删除匹配数据
        arrayList.Remove("a");
        //删除指定索引数据
        arrayList.RemoveAt(1);

在arrayList中,不仅插入了字符串a,还插入了数字123。这样在ArrayList中插入不同类型的数据是允许的。ArrayList会把所有插入其中的数据当作为object类型来处理,在使用ArrayList处理数据时,可能会报类型不匹配,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。

装箱与拆箱的概念:
装箱:就是将值类型的数据打包到引用类型的实例中
比如将string类型的值a赋给object对象obj

拆箱:就是从引用数据中提取值类型
比如将object对象obj的值赋给string类型的变量str

//装箱
        string str = "a";
        object obj = (object)str;

        //封箱
        object obj = "a";
        string str = (string)obj;

List

在声明List集合时,我们同时需要为其声明List集合内数据的对象类型。

//声明
        List<string> list = new List<string>();

        //新增
        list.Add("a");
        list.Add("b");

        //修改
        list[0] = "c";

        //移除指定匹配项
        list.Remove("a");

        //移除对应索引值
        list.RemoveAt(0);


最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,
需要获取这些内容的朋友请加Q君样:
11604713672

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值