LinkedList 源码分析(一)
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
LinkedList 源码分析(一)解读总结
正菜来了⛳⛳⛳
🎈LinkedList 类的实现
针对类:LinkedList 是实现的 AbstractSequentialList 抽象类针对接口:LinkedList 实现的是 List,Deque 等接口。
🎈LinkedList 成员变量
🍮transient int size = 0
含义: 这个代表的是 LinkedList 中元素的个数,用 transient 修饰表示 size 这个变量不能被序列化。
🍮transient Node<E> first;
含义: Pointer to first node. Invariant,这个表示 first 为一个不变量,指向链表中的第一个节点。
🍮 transient Node<E> last;
含义: Pointer to lastnode. Invariant,这个表示 last 为一个不变量,指向链表中的最后的一个节点。
🍮 LinkedList()
含义: 这个表示的是无参构造函数。
🍮LinkedList(Collection<? extends E> c)
含义: 这个表示的是有参构造函数,并且把集合 c 中的元素添加到 linkedlist 中去。
从上边的方法中可以看出来是调用了 addAll(c)这个函数,我们接着看。
🍮linkFirst(E e)
含义:这个函数表示的是把 e 作为 linkedlist 的第一个元素。
从上述函数中可以看出,会先创建一个 Node 节点存储 e 元素,然后判断 list 是不是空的,如果是空的,把 last 指向新创建的节点,不为空的话,把原来 first 的节点的前驱节点指向新创建的第一个节点。
🍮linkLast(E e)
含义:这个函数表示的是把 e 作为 linkedlist 的最后一个元素。
从上述函数中可以看出,会先创建一个 Node 节点存储 e 元素,然后判断 list 是不是空的,如果是空的,把 first 指向新创建的节点,不为空的话,把原来 last 的节点的后驱节点指向新创建的第一个节点。
🍚总结
以上是关于 LinkedList 源码变量和部分函数的总结,希望有所帮助。
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/b202704a1411cd49ae42c71cf】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论