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
对应的值就好了。