Array、List、ArrayList、LinkedList比较

Array:

  • 内存中连续存储,查找速度快,赋值与修改元素简单。
int[] array = new int[5];//如果数组元素类型为基本数据类型,在完成new 操作之后,数组中的元素会自动初始化为空值,可以直接使用,但是数组元素为引用类型,在完成new操作之后,没有给引用类型赋值,就直接使用数组中的元素,会产生运行时异常
int[] array1 = new int[5] { 1, 3, 5, 7, 9 }; //定长,
int[] array11 = new int[] { 1, 3, 5, 7, 9 };
int[] array2 = { 1, 3, 5, 7, 9 }; //静态初始化,数组的存储空间的分配是由编译器完成

ArrayList:

  • ArrayList把所有插入其中的所有数据当做object,故添加不同类型的数据是允许的,这也导致了ArrayList不是类型安全的,处理数据时很可能报类型不匹配的错误,并且在存储或检索值类型是通常发生装箱拆箱操作,带来很大的新能损耗。
  • ArrayList可以根据存储的数据来动态扩容,所以,在声明ArrayList对象时并不需要指定它的长度。
  • ArrayList底层是封装了数组,默认初始容量为10,超过后自动扩容为原来长度的1.5倍,仍然超过则设置为最大值0x7fffffff-8,再超过则设置为0x7fffffff
  • 正确预估可能的元素,并在适当的时候调用trimToSize()方法是提高ArrayList使用的重要途径。trimToSize将ArrayList实例的容量缩减为列表的当前大小。应用程序可以使用这个操作来最小化ArrayList实例的存储。
  • ArrayList list1 = new ArrayList(); 
    ArrayList list1 = new ArrayList(40); 

List:

  • List是ArrayList的泛型等效类,大部分用法与ArrayList相似,但在声明List集合时必须声明内部数据的对象类型。
  • List<string> list = new List<string>();  //新增数据  
    list.Add(“abc”);  //修改数据  
    list[0] = “def”;  //移除数据  
    list.RemoveAt(0);  

LinkedList:

  • 链在内存中不连续,插入删除速度快,查找速度慢。
  • 数组和数组列表在内存中连续,从中间位置插入删除一个元素需要付出很大的代价。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值