java中ArrayList与LinkedList的原理及区别

ArrayList

ArrayList实现原理就是动态数组,为什么叫动态数组呢,就是当ArrayList容量扩大时,底层的数组的容量会自动扩大50%,并且ArrayList是线程不安全的。
其优点是查询消耗的时间短,属于随机查询。而相对于LinkedList而言它的添加、删除操作要更耗时。
对于ArrayList在存储大量数据时会大量浪费很多空间,原因就是数组的起始容量为10,当数组要增长时增长公式(newcapacity=(oldcapacity*3)/2+1),相当于增加的50%,这样就会浪费大量空间,如果在你知道你要存储数据的容量前提下,最好声明容量大小。也可以使用trimToSize去掉多余的空间。

LinkedList

LinkedList的实现原理基于链表。其优点就是方便添加和删除元素,而arraylist的优点恰恰的LinkedList的缺点,其查询方法消耗的时间要大于arraylist。    

总体上来看,如果你需要做大量的查询工作建议你使用ArrayList,如果需要做大量的添加、删除工作建议使用LinkedList.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值