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个List
和Queue
接口,有关LinkedList
的结构以及Node
结点的结构可以看看上篇文章。
2.1 增加
offer[xxx]
add[xxx]
push
可以发现最后本质都是调用了
linkFirst
或者linkLast
,由于两者的实现接近相同,仅以linkFirst
举例
2.2 删除
remove[XXX]
poll[XXX]()
pop()
可以看到无论是删除头节点还是尾结点,核心都是调用了
unlinkxxx
方法,查看unlinkFirst
源码,注意在分析这段代码的时候unlink
传入的参数要么是first
要么是last
。
2.3 查看
可以看到peek
要么是查看头元素,要么是查看尾元素,所以直接返回first
或者last
对应的值就好了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。