标题:
Java 容器源码分析之Queue(2)
[打印本页]
作者:
look_w
时间:
2018-12-17 17:39
标题:
Java 容器源码分析之Queue(2)
Deque 按照我们一般的理解,Deque是一个双向队列,这将意味着它不过是对Queue接口的增强。如果仔细分析Deque接口代码的话,我们会发现它里面主要包含有4个部分的功能定义。1. 双向队列特定方法定义。 2. Queue方法定义。 3. Stack方法定义。 4. Collection方法定义。
第3,4部分的方法相当于告诉我们,具体实现Deque的类我们也可以把他们当成Stack和普通的Collection来使用。这也是接口定义规约带来的好处。这里我们就不再赘述。
我们重点来对Queue相关的定义方法做一下概括:
add相关的方法有如下几个:
Java代码 [url=]
[/url]
[url=]
[/url]
boolean
add(E e);
boolean
offer(E e);
void
addFirst(E e);
void
addLast(E e);
boolean
offerFirst(E e);
boolean
offerLast(E e); [url=]
[/url]
这里定义了add, offer两个方法,从doc说明上来看,两者的基本上没什么区别。之所以定义了这两个方法是因为Deque继承了Collection, Queue两个接口,而这两个接口中都定义了增加元素的方法声明。他们本身的目的是一样的,只是在队列里头,添加元素肯定只是限于在队列的头或者尾添加。而offer作为一个更加适用于队列场景中的方法,也有存在的意义。他们的实现基本上一样,只是名字不同罢了。
remove相关的方法:
Java代码 [url=]
[/url]
[url=]
[/url]
E removeFirst(); E removeLast(); E pollFirst(); E pollLast(); E remove(); E poll();
[url=]
[/url]
这里remove相关的方法poll和remove也很类似,他们存在的原因也和前面一样。
get元素相关的方法:
Java代码 [url=]
[/url]
[url=]
[/url]
E getFirst(); E getLast(); E peekFirst(); E peekLast(); E element(); E peek();
[url=]
[/url]
peek和element方法和前面提到的差别有点不一样,element方法是在队列为空的时候抛异常,而element则是返回null。
ok,有了前面这些对方法操作的分门别类,我们后面分析起具体实现就更方便了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0