文章目录
栈和队列的定义
- 队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front,也叫队头)进行删除操作,而在表的后端(rear,也叫队尾)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
- 栈:只能在一端(称为栈顶(top))对数据项进行插入和删除。
相关接口和类
Interface Queue<E> 继承了 Collection<E>, Iterable<E>
Interface Deque<E> 继承了 Collection<E>, Iterable<E>, Queue<E>,双端队列
Class ArrayDeque<E> 继承了AbstractCollection<E>,实现了Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>
Class LinkedList<E> 实现了Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, Queue<E>,List<E>
ArrayDeque<E>和LinkedList<E>都实现了双端队列Deque<E>,可以使用ArrayDeque<E>或LinkedList<E>实现栈和队列的功能。ArrayDeque采用数组的实现方式,LinkedList采用链表的实现方法。如果数据量较大,则使用LinkedList,否则优先使用ArrayDeque.
ArrayDeque实现栈的功能
import java.util.ArrayDeque;
import java.util.Deque;
public class CollectionDemo {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<String>();
// 进栈
stack.push("aa");
stack.push("bb");
// 查看栈顶元素
String top = stack.