实现的所有接口
Serializable
, Cloneable
, Iterable<E>
, Collection<E>
, List<E>
, RandomAccess
public class Stack<E>
extends Vector<E>
Stack
类表示后进先出(LIFO)对象堆栈。它通过五个操作扩展了类Vector
,允许将向量视为堆栈。提供了通常的push
和pop
操作,以及在堆栈顶部项目中的peek
的方法,用于测试堆栈是否为empty
的方法,以及用于项目的堆栈的方法以及发现它的距离search
是从顶部。
首次创建堆栈时,它不包含任何项目。
Deque
接口及其实现提供了更完整和一致的LIFO堆栈操作集,应优先使用此类。 例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
继承关系图??
参数类型
E
- 此双端队列中保留的元素类型
All Superinterfaces:
Collection<E>
, Iterable<E>
, Queue<E>
All Known Subinterfaces:
BlockingDeque<E>
所有已知实现类:
ArrayDeque
, ConcurrentLinkedDeque
, LinkedBlockingDeque
, LinkedList
public interface Deque<E> extends Queue<E>
线性集合,支持两端插入和移除元素。名称deque是“双端队列”的缩写,通常发音为“deck”。大多数Deque
实现对它们可能包含的元素数量没有固定限制,但此接口支持容量限制的deques以及没有固定大小限制的deques。
此接口定义了访问双端队列两端元素的方法。 提供了插入,移除和检查元素的方法。 这些方法中的每一种都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值( null
或false
,具体取决于操作)。 后一种形式的插入操作专门设计用于容量限制的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()
Stack
。 当deque用作堆栈时,元素将从双端队列的开头推出并弹出。 堆栈方法相当于Deque
方法,如下表所示:Comparison of Stack and Deque methods Stack Method Equivalent Deque
Method push(e)
addFirst(e)
pop()
removeFirst()
peek()
getFirst()
请注意,当deque用作队列或堆栈时, peek
方法同样有效; 在任何一种情况下,元素都是从双端队列的开头绘制的。
此界面提供了两种删除内部元素的方法, removeFirstOccurrence
和removeLastOccurrence
。
与List
接口不同,此接口不支持对元素的索引访问。
虽然严格要求Deque
实现禁止插入null元素,但强烈建议他们这样做。 任何用户Deque
强烈建议实现,也允许null元素不采取插入空的能力优势。 这是因为null
被各种方法用作特殊返回值,以指示deque为空。
Deque
实现通常不定义equals
和hashCode
方法的基于元素的版本,而是继承类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() |
返回此双端队列中的元素数。 |
原文:https://www.cnblogs.com/code-duck/p/13569388.html