赞
踩
环境说明: 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,可以自己梳理,对整个集合方法关系组成有一个更深入的理解.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。