Java Deque是一种结合了普通Queue和Stack的数据结构,实际上就是一个接口,linkedlist和arraydeque都有对这个接口的实现。您可以在 Deque 的头部和尾部添加和删除元素。如果当队列使用就是先进先出,如果是栈就是先进后出

特点:

  • Java 中的 Deque 是一个接口,它的实现提供了对可变大小数组的支持。所以你有一个数组不受限制的容量,你可以根据你的需要添加新的元素。
  • Deque 不支持多个线程的当前访问
  • 在没有外部同步的情况下,双端队列不是线程安全的。
  • 数组双端队列中不允许有 Null 元素。

方法:

  • boolean add(element)添加一个元素到双端队列的尾部。成功时返回 true,如果当前没有可用空间则抛出 IllegalStateException。
  • addFirst(element)将一个元素添加到 Deque 的头部。
  • addLast(element)将一个元素添加到双端队列的尾部。
  • offer(element)在尾部添加一个元素并返回一个布尔值来说明插入是否成功。
  • offerFirst(element)向头部添加一个元素并返回一个布尔值来说明插入是否成功。
  • offerLast(element)在尾部添加一个元素并返回一个布尔值来说明插入是否成功。
  • iterator()返回双端队列的迭代器。
  • descendingIterator()返回一个迭代器,该迭代器具有与此双端队列相反的顺序。
  • push(element)向头部添加一个元素。
  • pop(element)从头部移除一个元素并返回它。
  • removeFirst()删除头部的元素。
  • removeLast()删除尾部的元素。
  • poll()检索并移除此双端队列所表示的队列的头部(换句话说,此双端队列的第一个元素),或者如果此双端队列为空,则返回 null。
  • pollFirst()检索并删除此双端队列的第一个元素,如果此双端队列为空,则返回 null。
  • pollLast()检索并删除此双端队列的最后一个元素,如果此双端队列为空,则返回 null。
  • peek()检索但不移除此双端队列所代表的队列的头部(换句话说,此双端队列的第一个元素),或者如果此双端队列为空则返回 null。
  • peekFirst()检索但不删除此双端队列的第一个元素,如果此双端队列为空,则返回 null。
  • peekLast()检索但不删除此双端队列的最后一个元素,如果此双端队列为空,则返回 null。