Java之LinkedList源码分析(第十二篇:总结)

(本文基于JDK1.8)

前言

    从决定分析LinkedList,到最后的初步完成,一路走来,感慨颇多,我知道它并不完美,所以我会不断改进文章内容,每次也是自己的一次复习。

LinkedList类结构

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{ …………省略很多代码…………}

1、LinkedList实现了List接口、Deque接口,表示LinkedList既可以作为普通的线性表、又可以作为栈、又可以作为一个队列,因为Deque表示双端队列能力,Deque接口扩展Queue接口

2、LinkedList的底层数据结构是双向链表,插入元素与删除元素的效率非常高,时间复杂度是O(1)

3、LinkedList查找元素较慢,每次都需要从双向链表的头部或者双向链表的尾部开始查找,LinkedList查找的时间复杂度是O(n),n为元素规模,元素越多,效率越差

4、父类为AbstractSequentialList

5、实现Cloneable接口,支持clone()创建对象

6、实现Serializable接口,支持对象的序列化与反序列化

 

LinkedList添加元素的方法(数一数有多少个,共计10个)

1、add(E e) 在链表尾部添加一个结点,欧耶

2、add(int index, E element) 在链表指定位置处添加一个结点,比如 在第二个结点后面添加一个结点,add(3,node)就是了

3、addFirst(E e) 在链表的头部添加一个元素,即添加的元素,作为第一个结点,嘿嘿

4、addLast(E e) 在链表的尾部添加一个元素,即添加的元素,作为最后一个结点,嘿嘿

5、push(E e) 也是在链表的头部添加一个元素,即添加的元素,作为第一个结点, 嘿嘿

6、 offer(E e) 在链表尾部添加一个元素,欧耶

7、offerFirst(E e) 在链表头部添加一个元素,嘿嘿嘿嘿

8、offerLast(E e) 在链表尾部添加一个元素,嘿嘿嘿嘿

9、addAll(Collection<? extends E> c) 在链表尾部,把Collection中所有的元素逐个添加上,嘿嘿

10、addAll(int index, Collection<? extends E> c) 在链表尾部,把Collection中指定index开始的元素,一个一个添加上,嘿嘿

 

LinkedList删除元素的方法(共计12个)

1、remove(Object o) 从链表头部开始,找到第一个匹配的元素,然后干掉它,嘿嘿

2、remove(int index) 删除指定位置的元素,嘿嘿,想删哪个结点,删哪个,开心

3、remove() 干掉链表中的第一个结点

4、removeFirst() 嘿嘿,看名字也知道了,同样是干掉链表的第一个元素

5、removeLast() 干掉链表中的最后一个元素

6、removeFirstOccurrence(Object o) 从链表头部到尾部,干掉第一个符合的元素

7、removeLastOccurrence(Object o) 从链表尾部到头部,干掉第一个符合的元素(反过来讲,从头到尾遍历,就是干掉最后一次符合的元素) 

8、poll() 干掉第一个元素

9、pollFirst() 干掉第一个元素

10、pollLast() 干掉最后一个元素

11、pop() 嘿嘿,干掉第一个元素

12、clear() 清除掉所有结点,差点又漏掉你

 

LinkedList修改元素的方法(共计2个)

1、set(int index, E element) 把指定位置的元素,替换一下,嘿嘿(替换结点)

2、迭代器中的set(int,E)方法

 

LinkedList查找元素的方法(共计9个)

1、element() 获得第一个结点,嘿嘿

2、get(int index) 获得指定位置的结点,嘿嘿

3、getFirst() 获得第一个结点,嘿嘿

4、getLast() 获得最后一个结点,嘿嘿

5、indexOf(Object o) 从链表头部到尾部,第一次匹配的结点,返回它的下标(第几个结点,注意:第一个结点的下标是0)

6、lastIndexOf(Object o) 从链表尾部到头部,找到第一个匹配到结点,然后返回它的下标,嘿嘿

7、peek() 获得第一个结点,嘿嘿

8、peekFirst() 获得第一个结点

9、peekLast() 获得链表的最后一个结点

 

总结

无论哪种数据结构,增加、删除、修改、查找,是永恒的主题【增】【删】【改】【查】牢记于心!!!

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值