java集合系列10 Deque

来源:互联网 发布:淘宝联盟怎么申请网站 编辑:程序博客网 时间:2024/06/06 02:01

前言

Deque 双端队列 继承了 Queue
这里写图片描述

Deque

文档介绍

一个线性collection,支持在两端插入和删除。deque 是 “double ended queue”的缩写。绝大多数的Deque实现对它们能包含的元素数没有固定的限制,但此接口支持容量限制,也支持没有固定大小限制的双端队列。

此接口定义了访问队列两端元素的方法。提供了插入,移除,检查元素的方法。这些的每个方法存在两种形式:如果失败一种抛出一个异常,一种返回一个特殊值(null 或 false, 依赖于具体的操作)。后一种形式的插入操作用于具有容量限制的特殊双端队列;在大多数实现中,插入操作不会失败。

上面介绍的十二个方法的概括
有意义的方法名 offer(提供) poll(剪短) peek(偷窃)

- 头部 头部 尾部 尾部 - 抛出异常 特殊值 抛出异常 特殊值 插入 addFirst(e) offerFirst(e) addLast(e) offerLast(e) 移除 removeFirst() pollFirst() removeLast() pollLast() 检查 getFirst() peekFirst() getLast() peekLast()

此接口扩展了Queue接口。在将双端队列用于队列时,将得到FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。从Queue接口继承的方法完全等效于Deque方法,展示在下表

Queue方法 等效Deque方法 add(e) addLast(e) offer(e) offerLast(e) remove() removeFirst() poll() pollFirst() element() getFirst() peek() peekFirst()

双端队列也可用于后进先出堆栈。就优先使用此接口而不是遗留Stack类,当一个双端队列被用作堆栈时。Stack与Deque完全等价的方法在下面的表格展示

Stack 方法 等价的Deque方法 push(e) addFirst(e) pop() removeFirst() peek() peekFirst()

注意,在将双端队列用作队列或堆栈时,peek方法同样正常工作;无论哪种情况下,都从双端队列的开头抽取元素
此接口提供了两种移除内部元素的方法:removeFirstOccurrence 和 removeLastOccurrence

与List接口不同,此接口不支持通过索引访问元素。

虽然Deque实现没有严格要求禁止插入null元素,但强烈建议最好这样做。建议使用任何允许null元素的实现的双端队列的用户不利用插入null的功能。这因为当双端队列为空时好多方法将null作为特殊的返回值

Deque 实现通常不定义基于元素的 equals 和 hashCode 方法,而是从 Object 类继承基于身份的 equals 和 hashCode 方法。

源码

public interface Deque<E> extends Queue<E>{    void addFirst(E e);    void addLast(E e);    boolean offerFirst(E e);    boolean offerLast(E e);    E removeFirst();    E removeLast();    E pollFirst();    E pollLast();    E getFirst();    E getLast();    E peekFirst();    E peekLast();    boolean removeFirstOccurrence(Object o);    boolean removeLastOccurrence(Object o);    //队列的方法    boolean add(E e);    boolean offer(E e);    E remove();    E poll();    E element();    E peek();    //堆栈的方法    void push(E e);    E pop();    //集合的方法    boolean remove(Object o);    boolean contains(Object o);    public int size();    Iterator<E> iterator();    Iterator<E> descendingIterator();}
0 0
原创粉丝点击