Stack 栈是 Vector 的一个子类,它实现了一个标准的后进先出的栈。它的底层是一个数组。
堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由 Vector 定义的所有方法,也定义了自己的一些方法。
| 方法 | 描述 |
| — | — |
| E push(E item)
| 压栈 |
| E pop()
| 出栈 |
| E peek()
| 查看栈顶元素,不删除 |
| boolean empty()
| 判断栈是否为空 |
注意: 下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的
示例一: 用 Stack 构造一个元素为整形的栈
Stack stack = new Stack<>();
示例二: 压栈
stack.push(1);
stack.push(2);
stack.push(3);
// 结果为:[1, 2, 3]
示例三: 查看栈顶元素不删除
System.out.println(stack.peek());
System.out.println(stack);
// 结果为:3 和 [1, 2, 3]
示例四: 出栈
System.out.println(stack.pop());
System.out.println(stack);
// 结果为:3 和 [1, 2]
示例五: 判断栈是否为空
System.out.println(stack.empty());
// 结果为:false
============================================================================
Queue 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList 类实现了 Queue 接口,因此我们可以把 LinkedList 当成 Queue 来用。
| 方法 | 描述 |
| — | — |
| boolean offer(E e)
| 入队列(出现错误返回特殊值) |
| boolean add(E e)
| 入队列(出现错误抛异常) |
| E poll()
| 出队列(出现错误返回特殊值) |
| E remove()
| 出队列(出现错误抛异常) |
| E peek()
| 得到队首元素,不删除(出现错误返回特殊值) |
| E element()
| 得到队首元素,不删除(出现错误抛异常) |
| boolean isEmpty()
| 判断队列是否为空 |
注意: 接下来使用 LinkedList 演示队列的使用方法,只要把握先进先出的原则就行。下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的
示例一: 使用 LinkedList 创建一个元素为整型的队列
LinkedList linkedList = new LinkedList<>();
示例二: 入队列
linkedList.offer(1);
linkedList.offer(2);
linkedList.offer(3);
示例三: 出队列
System.out.println(linkedList.poll());
// 结果为:1
示例四: 得到队首元素,不删除
System.out.println(linkedList.peek());
// 结果为:2
示例五: 判断队列是否为空
System.out.println(linkedList.isEmpty());
// 结果为:false
============================================================================
双端队列是指允许两端都可以进行入队和出队操作的队列。元素可以从队头出队和入队,也可以从队尾出队和入队
LinkedList 类实现了 Deque 接口,因此我们可以把 LinkedList 当成 Deque 来用。
| 方法 | 描述 |
| — | — |
| boolean offerFirst(E e)
| 从队头入队 |
| boolean offerLast(E e)
| 从队尾入队 |
| E pollFirst()
| 从队头出队 |
| E pollLast()
| 从队尾出队 |
| E peekFirst()
| 得到队头元素,不删除 |
| E peekLast()
| 得到队尾元素,不删除 |
注意: 接下来使用 LinkedList 演示队列的使用方法,只要把握先进先出的原则就行。下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的
示例一: 使用 LinkedList 创建一个元素为整型的队列
LinkedList linkedList = new LinkedList<>();