头图

1 前言

本篇文章主要讲的是Queue接口,以及它的3个常用实现类之一的LinkedList,其实它的常用实现类还有几个,不过都是java.util.concurrent 包下面的,后面讲多线程的时候会专开一个系列来写。

先来看看Queue接口中声明的常用方法,有关数据的基础用法真的离不开增删改查。

1.1 常用方法

增加:

  • offer[XXX](E e)
  • add[xxx](E e)
  • push(E e)

删除:

  • remove[XXX]()
  • poll[XXX]()
  • pop()

查询:

  • peek[XXX+]()

2 LinkedList

在这个系列的上一篇文章也提到过LinkedList 是实现了2个ListQueue 接口,有关LinkedList 的结构以及Node 结点的结构可以看看上篇文章。

2.1 增加

  1. offer[xxx]

  2. add[xxx]

  3. push

    可以发现最后本质都是调用了linkFirst 或者linkLast ,由于两者的实现接近相同,仅以linkFirst 举例

2.2 删除

  1. remove[XXX]

  1. poll[XXX]()

  2. pop()

    可以看到无论是删除头节点还是尾结点,核心都是调用了unlinkxxx 方法,查看unlinkFirst源码,注意在分析这段代码的时候unlink传入的参数要么是first要么是last

2.3 查看

可以看到peek 要么是查看头元素,要么是查看尾元素,所以直接返回first或者last 对应的值就好了。


cutey_none
3 声望0 粉丝