List-ArrayList集合基础增强底层源码分析
List集合基础增强底层源码分析
作者:Stanley 罗昊
【转载请注明出处和署名,谢谢!】
集合分为三个系列,分别为:List、set、map
List系列
特点:元素有序可重复
有序指的是元素的添加顺序,也就是说,元素被第一个存进去的时候,它就在第一位,这就是list集合的元素添加顺序;
通常情况下我们所说的有序有两个概念,第一个是添加顺序,第二个是大小顺序(实际上就是元素值的大小)
List下面重点关注两个实现类分别是:
ArrayList LinkedList
ArrayList
ArrayList底层实现是数组,既然是数组,那它就必然有数组的特点:查找快,增删慢;
这里简单解释一下:
首先我们建立一个数组,一旦建立一个数组,那么程序就会在内存中开辟一个连续的内存存储空间,并且它是有下标的,从0开始,一旦定义长度就无法发生改变。
现在,假设我们往数组里面存值,当然是你定义什么类型,你就存什么类型的值进去,如果现在想获取,我们直接通过下标就可以进行获取了,但是我删除元素的时候,是怎么删除的呢?
数组删除过程
假设我定义一个数组如下图:
红框内,代表我存的值,黑线上方则是他们值对应的下标
假设我现在想删除c这个元素,这个时候d就会向前移动e也会移到d的位置f也会移到e的位置上,结果后面会空出来的那个就被删掉了,结果就成了