Collection源码分析(二):LinkedList源码分析

LinkedList 实现List<E>, Deque<E>, Cloneable, java.io.Serializable接口

对于Deque解释如下

这是一个线性的双端队列接口,继承自接口Queue

下面是LinkedList的主要参数

first第一个节点 last最后一个节点 size 列表的长度

主要看一下add 方法

我们可以看到LinkedList添加节点的时候 是New了一个Node节点 这个节点有三个参数 item 元素

next 下一个元素 prev 上一个元素

他的一个三参构造器 将最后一个节点 作为新加的节点的前一个元素(prev)的值

新节点的下一个节点(next)赋值null

然后 将新节点赋值给last变量 更新last标识 最后size +1 (列表长度)and modCount+1 (添加次数)

remove();

remove(int);

判断index 是不是在size范围之内

总体来说 就是 如果当前节点 A 前一个节点是空 就将LinkedList得frist标识 置为A节点得next指向得节点

如果不是 则将A节点得前一个节点得next值指向 A节点得下一个节点 

当前节点 A 下一个节点是空 就将LinkedList得last标识 置为A节点得prev指向得节点

如果不是将A节点得下一个节点得 前一个节点指针(prev)指向A节点得prev节点

可以跳过上面这个四行 总的数据结构就是 一个双向链表 基础得删除增加操作

总结:LinkedList整体结构 是以对象Node为元素 得一个双线链表

对比前一章得ArrayList 我们可以看出 如果做插入操作 删除操作 用Linkedlist会有较高得效率

对于查询来说 通过数组下标直接访问一般会比链表要快 

所以我们要更具不同的业务场景选择合适得列表结构

猜你喜欢

转载自my.oschina.net/u/2970507/blog/1798006