集合框架:List

List

List是一个接口,ArrayList是该接口的实现类;它继承AbstractList抽象类和实现List接口的一个实现类;List接口不能直接构造,但是可以为List接口创建一个指向它的对象引用,ArrayList就充当了这个指向List接口的对象引用;

ArrayList解释:底层是基于动态数组,根据下标随机访问数组元素的,效率高,向数组尾部添加元素时效率高,删除数据和向数组中部添加数据时效率降低,因为需要移动数组元素位置;它最大容量是 Integer.MAX_VALUE-8(但是当此容量不能满足需求时也会扩容到 Integer.MAX_VALUE),当超过这个容量时会进行扩容,每次扩容后的容量是当前容量的1.5倍;属于线性表;get()/add(E)操作复杂度为O(1),add(index,E)/remove()操作复杂度为O(n);

LinkedList解释:基于链表的动态数组,数据的添加删除效率高,只需要改变指针指向即可,访问数据时效率低,因为需要遍历链表;属于链表操作,get()/add(index,E)复杂度为O(n),add(E)/remove()操作复杂度为O(1);

当实际使用时,对于随机访问get/set时ArrayList效率优于LinkedList,移动指针降低了LinkedList效率,对于新增和删除add/remove操作时,LinkedList优于ArrayList,数组移动元素降低了ArrayList效率;ArrayList只能用作列表,LinkedList可以用做列表或队列,LinkedLIst同时实现类Deque;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值