LinkedList和ArrayList的区别

关于这篇文章存在的意义在于,ArrayList既然存取快,又是一个可变长的数组,那么为什么还要有LinkedList?

ArrayList和LinkedList来自于同一个干爹List,网上的解释大都是ArrayList是一个数组,是一个可变大小的数组,嗯?有一定计算机基础的同学会对他的物理存储和逻辑结构产生疑问,它真的还是一个数组吗?它有没有违反数组的定义——连续性?它在物理存储还是一个连续的空间吗?ArrayList它里面到底有没有List的基因?

对数据结构没有基础的同学听我慢慢道来,有基础的同学可以跳过。

首先,数组的定义是空间连续的,这也是它为什么存储速度快的原因,当你需要取数组的第x个元素的时候,你只需要知道数组的首地址m和每个元素的空间大小y,所以第x个元素所对应的空间地址=m+x*y。

现在你应该知道的是,一旦破坏这种结构,数组将变得毫无意义。


该分析来源于JDK1.7的源代码,已知1.8_101已被封装





未完...待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值