ArrayList和LinkedList

本文详细对比了ArrayList和LinkedList两种集合类的底层实现原理。ArrayList基于动态数组,支持自动扩容,而LinkedList则基于双向链表,更适用于实现队列结构。文章还探讨了JDK1.8中ArrayList扩容策略的改进。

ArrayList和LinkedList的区别

  1. ArrayList底层是数组结构。
  2. LinkedList底层使列表结构。适用于实现先进先出Queue队列。可以直接继承实现Java.util.queue

ArrayList底层扩容
ArrayList底层采用数组来实现元素存储,与数组最大的不同点就在于可以实现自动扩容,1.7中,采用newCapacity = oldCapacity +(oldCapacity>>1);改为移位运算,同时扩容容量变为1.5倍。
在JDK1.8中,
如果minCapacity小于10,则会自动将扩容参数增大到10。
如果在初始化时调用无参构造方法,在调用该方法时,会对

minCapacity参数进行比较,如果小于10,则不会进行任何操作,即不会对10以下的主动扩容请求进行处理

如果旧容量的1.5倍不够传入的参数,那么就扩容到指定的参数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值