Ⅰ. Stack(不推荐使用了☠)

常见方法如下所示:

其中
peek()就相当于是std::stack中的top()。
注意事项:
-
在比较元素相同的时候,要使用
equals(),因为就算存储的是整数Stack<Integer>类型,里面仍然是引用类型,不能直接通过==来比较 ! -
因为
Stack继承于Vector,而Vector中还有很多实用的方法比如size()方法等,都是可以使用的,但由于Vector比较老,并且这种设计违反了最小接口原则 ,所以现在不推荐使用Stack,而是用Deque来替代 !(如下面代码所示)-
Java推荐使用Deque接口的实现类,比如:-
ArrayDeque -
LinkedList
Deque<Integer> stack = new ArrayDeque<>(); // 使用Deque代替Stack stack.push(1); // 入栈 stack.pop(); // 出栈 stack.peek(); // 查看栈顶 stack.isEmpty(); // 是否为空 -
-

Ⅱ. Queue


注意事项:
-
Queue 是一个接口,要使用实现类来实现,常用
LinkedList、ArrayDeque、PriorityQueue来实现! -
一个队列可以实现 栈,但是一个栈实现不了 队列!225. 用队列实现栈、232. 用栈实现队列
Ⅲ. Deque

Deque是一个接口,使用时必须创建 LinkedList或者 ArrayDeque类型的对象 。在实际工程中,使用 Deque 接口是比较多的,栈和队列均可以使用该接口。
Deque<Integer> stack = new ArrayDeque<>(); *// 双端队列的线性实现 *
Deque<Integer> queue = new LinkedList<>(); *// 双端队列的链式实现*| 操作类型 | 方法名 | 描述 | 抛出异常版本 | 返回特殊值版本 |
|---|---|---|---|---|
| 插入 |
addFirst(e) | 在队首插入元素 | 如果容量受限会抛出IllegalStateException | offerFirst(e) - 失败返回false |
| addLast(e) | 在队尾插入元素 | 同上 | ||
| offerLast(e) - 失败返回false | 移除 | removeFirst() | 移除并返回队首元素 | 队列为空时抛出NoSuchElementException |
| pollFirst() - 队列为空返回null | removeLast() | 移除并返回队尾元素 | ||
| 同上 | pollLast() - 队列为空返回null | 查看 | getFirst() | 查看队首元素(不移除) |
| 队列为空时抛出NoSuchElementException | peekFirst() - 队列为空返回null | getLast() | ||
| 查看队尾元素(不移除) | 同上 | peekLast() - 队列为空返回null | 栈操作 | push(e) |
| 将元素压入栈 | 可能抛出IllegalStateException | 无 | ||
| pop() | 弹出栈顶元素 | 栈为空时抛出NoSuchElementException | 无 | 其他 |
| size() | 返回队列中元素数量 | - | - | |
| isEmpty() | 判断队列是否为空 | - | ||
| - | contains(o) | 判断是否包含指定元素 |