首页 > 编程语言 > 详细

Java用于构造栈结构时优先使用Deque

时间:2020-08-27 09:42:05      阅读:83      评论:0      收藏:0      [点我收藏+]

Class Stack<E>

  • java.lang.Object

    • 实现的所有接口

      SerializableCloneableIterable<E>Collection<E>List<E>RandomAccess


    public class Stack<E>
    extends Vector<E>
    

    Stack类表示后进先出(LIFO)对象堆栈。它通过五个操作扩展了类Vector ,允许将向量视为堆栈。提供了通常的pushpop操作,以及在堆栈顶部项目中的peek的方法,用于测试堆栈是否为empty的方法,以及用于项目的堆栈的方法以及发现它的距离search是从顶部。

    首次创建堆栈时,它不包含任何项目。

    Deque接口及其实现提供了更完整和一致的LIFO堆栈操作集,应优先使用此类。 例如:

       Deque<Integer> stack = new ArrayDeque<Integer>(); 
    

继承关系图??

技术分享图片

Interface Deque<E>

    • 参数类型

      E - 此双端队列中保留的元素类型

    • All Superinterfaces:

      Collection<E>Iterable<E>Queue<E>

    • All Known Subinterfaces:

      BlockingDeque<E>

    • 所有已知实现类:

      ArrayDequeConcurrentLinkedDequeLinkedBlockingDequeLinkedList


    public interface Deque<E> extends Queue<E>
    
    • 线性集合,支持两端插入和移除元素。名称deque是“双端队列”的缩写,通常发音为“deck”。大多数Deque实现对它们可能包含的元素数量没有固定限制,但此接口支持容量限制的deques以及没有固定大小限制的deques。

    • 此接口定义了访问双端队列两端元素的方法。 提供了插入,移除和检查元素的方法。 这些方法中的每一种都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值( nullfalse ,具体取决于操作)。 后一种形式的插入操作专门设计用于容量限制的Deque实现; 在大多数实现中,插入操作不会失败。

  • 此接口扩展了Queue接口。 当deque用作队列时,会产生FIFO(先进先出)行为。 元素在双端队列的末尾添加并从头开始删除。 继承自Queue接口的方法与Deque方法完全等效,如下表所示:

    Comparison of Queue and Deque methods Queue Method Equivalent Deque Method add(e) addLast(e) offer(e) offerLast(e) remove() removeFirst() poll() pollFirst() element() getFirst() peek() peekFirst()

    • Deques也可以用作LIFO(后进先出)堆栈。 应优先使用此接口,而不是旧版Stack 。 当deque用作堆栈时,元素将从双端队列的开头推出并弹出。 堆栈方法相当于Deque方法,如下表所示:

    Comparison of Stack and Deque methods Stack Method Equivalent Deque Method push(e) addFirst(e) pop() removeFirst() peek() getFirst()

    请注意,当deque用作队列或堆栈时, peek方法同样有效; 在任何一种情况下,元素都是从双端队列的开头绘制的。

    此界面提供了两种删除内部元素的方法, removeFirstOccurrenceremoveLastOccurrence

    List接口不同,此接口不支持对元素的索引访问。

    虽然严格要求Deque实现禁止插入null元素,但强烈建议他们这样做。 任何用户Deque强烈建议实现,也允许null元素采取插入空的能力优势。 这是因为null被各种方法用作特殊返回值,以指示deque为空。

    Deque实现通常不定义equalshashCode方法的基于元素的版本,而是继承类Object基于身份的版本。

    • 方法摘要

      变量和类型 方法 描述
      boolean add(E e) 将指定的元素插入此双端队列表示的队列中(换句话说,在此双端队列的尾部),如果它是立即可行且不会违反容量限制,返回 true成功时和抛出 IllegalStateException如果当前没有空间可用的。
      boolean addAll(Collection<? extends E> c) 在此双端队列的末尾添加指定集合中的所有元素,就像通过在每个 对象上调用 addLast(E)一样 ,按照集合的迭代器返回它们的顺序。
      void addFirst(E e) 如果可以在不违反容量限制的情况下立即插入指定元素,则在此双端队列的前面插入指定元素,如果当前没有可用空间,则抛出 IllegalStateException
      void addLast(E e) 如果可以在不违反容量限制的情况下立即插入指定元素,则在此双端队列的末尾插入指定元素,如果当前没有可用空间,则抛出 IllegalStateException
      boolean contains(Object o) 如果此双端队列包含指定的元素,则返回 true
      Iterator<E> descendingIterator() 以相反的顺序返回此双端队列中元素的迭代器。
      E element() 检索但不删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素)。
      E getFirst() 检索但不删除此双端队列的第一个元素。
      E getLast() 检索但不删除此双端队列的最后一个元素。
      Iterator<E> iterator() 以适当的顺序返回此双端队列中元素的迭代器。
      boolean offer(E e) 将指定的元素插入此双端队列表示的队列中(换句话说,在此双端队列的尾部),如果它是立即可行且不会违反容量限制,返回 true在成功和 false如果当前没有空间可用。
      boolean offerFirst(E e) 将指定元素插入此双端队列的前面,除非它违反容量限制。
      boolean offerLast(E e) 在此双端队列的末尾插入指定的元素,除非它违反容量限制。
      E peek() 检索但不移除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回 null
      E peekFirst() 检索但不删除此双端队列的第一个元素,如果此双端队列为空,则返回 null
      E peekLast() 检索但不删除此双端队列的最后一个元素,如果此双端队列为空,则返回 null
      E poll() 检索并删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回 null
      E pollFirst() 检索并删除此双端队列的第一个元素,如果此双端队列为空,则返回 null
      E pollLast() 检索并删除此双端队列的最后一个元素,如果此双端队列为空,则返回 null
      E pop() 从此双端队列表示的堆栈中弹出一个元素。
      void push(E e) 如果可以在不违反容量限制的情况下立即执行此操作, IllegalStateException到此双端队列表示的堆栈(换句话说,在此双端队列的头部),如果当前没有可用空间则抛出 IllegalStateException
      E remove() 检索并删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素)。
      boolean remove(Object o) 从此双端队列中删除第一次出现的指定元素。
      E removeFirst() 检索并删除此双端队列的第一个元素。
      boolean removeFirstOccurrence(Object o) 从此双端队列中删除第一次出现的指定元素。
      E removeLast() 检索并删除此双端队列的最后一个元素。
      boolean removeLastOccurrence(Object o) 从此双端队列中删除最后一次出现的指定元素。
      int size() 返回此双端队列中的元素数。

Java用于构造栈结构时优先使用Deque

原文:https://www.cnblogs.com/code-duck/p/13569388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!