首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Java 容器源码分析之Queue(2)

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,有了前面这些对方法操作的分门别类,我们后面分析起具体实现就更方便了。
返回列表