【数据结构】2.java源码关于LinkedList
关于LinkedList的源码关注点 1.从底层数据结构,扩容策略 2.LinkedList的增删改查 3.特殊处理重点关注 4.遍历的速度,随机访问和iterator访问效率对比 1.从底层数据结构,扩容策略 构造函数不做任何操作,只要再add的时候进行数据初始化操作,以操作推动逻辑,而且linkedlist是一个双向链表,所以可以向前向后双向遍历 由于构造函数并没有任何操作,其实这里我们可以先看新增操作,并且因为用的是链表所以无法随机访问,这里随机读取就会比较慢  底层结构就是size,首节点,尾节点,还有就是一个List都有的共性就是modCount,这值用来记录这个list被修改了多少次 2.LinkedList的增删改查 2.1 add操作,linklast Add操作的实质就是进行linklast操作 linklast的操作就是再最后吧节点添加到尾部,并修正size大小 public boolean add(E ele) { linkLast(ele); return true; } 我们看看如果是在指定的位置插入元素的操作 首先要确认index再指定范围内 这里有个小优化,如果是在末尾进行添加的话,我们直接调用linklast就可以了 如果不是最后一个,那么首先要获取指定位置的node节点,我们遍历指定位置的时候 可以确定index的位置如果过半了,那么就从后往前