当前位置:   article > 正文

LinkedList源码解析_linkedlist源码分析:内部声明了node类型的first和last属性,默认值为null

linkedlist源码分析:内部声明了node类型的first和last属性,默认值为null

环境说明: JDK 1.8

1.类图:
看一个事物先从全局了解,然后再深入细节.
在这里插入图片描述
通过LInkedList类图可以看到LinkedList实现的关键接口有: List接口,Deque接口.
允许null值,线程不安全,并发修改下,迭代器快速失败.

2.成员变量
在这里插入图片描述
关键组成:静态内部类Node
在这里插入图片描述根据Node定义中三属性可以看出Node节点标记前后元素,基于Node的LinkedList是一个双向链表.

3.构造函数
在这里插入图片描述
4.关键方法
add新增方法:
点开看到其实就是调用的 linkLast()方法在链表尾部添加元素.真是不看源码不知道,一看源码吓一跳.
在这里插入图片描述
linkLast(),尾部增加.
新增一个Node节点,同时根据边界条件是否是首次添加来维护LInkedList的first和last属性.
在这里插入图片描述
再次看到这个熟悉的静态内部类Node,Node的prev和last属性就是Node本身,正是链表的每一个节点Node,前后也是节点Node.
在这里插入图片描述
类似的还有继承自Deque的 addFirst(),addLast()方法.

remove() 删除方法
在这里插入图片描述
继承自 Deque的remove方法,默认删除头元素.
根据指定索引删除元素,实现自List接口
在这里插入图片描述
首先还是通用的条件判断,找到节点,然后删除.其中找到元素使用的查询node()方法,根据index大小从前后查询,提升了一倍的性能.
查询方法 node()
在这里插入图片描述
5.总结
:通过源码分析可以看到
1.LinkedList基于双向链表,增删快,查询慢.
2.LinkedList线程不安全,
3.LInkedList方法部分继承自List,部分继承自Deque,可以自己梳理,对整个集合方法关系组成有一个更深入的理解.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1002307
推荐阅读
相关标签
  

闽ICP备14008679号