LinkedList集合源码分析(2)

(1)LinkedList 实现了无序、可重复的List接口,并且还实现了Deque(双端队列)和Queue(队列)接口。LinkedList 底层是基于链表结构实现的,实现了双端队列的特性(FIFO)和栈的的特性(LIFO)。

1)添加元素的方法源码分析?

具体源码分析如下:

1)创建Node的链表数据结构

2)添加元素处理Node的结构关系。

首先我们看下LinkedList的构造函数,有参的构造函数和ArrayList参数不一致,LinkedList 有参构造函数通过传递一个集合,添加到新LinkedList中。

LinkedList的构造函数

addAll通过将参数的集合元素转换成数组(Object[] a = c.toArray())并遍历这个数组创建Node链表关系。

LinkedList的all方法

基于all方法我们在看下LinkedList的add方法的源码:

LinkedList的add方法

基于上述分析,LinkedList实现了Collection接口的方法,主要是通过双端链表进行实现,在这个基础上扩展了队列的和栈的功能。

FIFO(先进先出):将元素添加到双端队列的末尾,从双端队列的开头移除元素。(和之前研究的add方法一样)

LIFO(先进后出):元素被推入双端队列的开头并从双端队列开头弹出。

在队列的开头插入元素

你可能感兴趣的:(LinkedList集合源码分析(2))