单列集合——ArrayList,LinkedList,迭代器的底层原理和源码
ArrayList
底层原理
空参构造创建集合时候,创建长度为零的数组名叫elementData,还有个成员变量size用来记录元素的个数,第一次空参,size长度是0。
添加第一个元素时,底层创建新的长度尾10的数组,数组中默认初始化值都是null,添加第一个元素a,然后size++, size值就是1。
存满后,创建一个新的数组,新数组长度是原来的1.5倍。再把所有元素拷贝到新数组中。
拷贝进去,剩余空的都是null。
如果这个也加满了,继续扩容为原来的1.5倍。
如果添加的时候不是一个一个加的,而且1.5倍还放不下,比如10个装满了,然后这时候一下要加100个数据,显然1.5扩容为15个还是不够。这时候新数组长度就不是1.5倍扩,而是以实际长度为准。
这时候新数组长度为10+100=110.
源码
LinkedList
底层原理
每个节点中都有三部分:
第一部分用来记录前一个节点地址值,
第二部分用来记录真实要存储的数据
第三部分用来记录下一个节点的地址值
这样就可以从头找到尾,利用第一部分地址值也可以从后找到前。