栈是一种具有[先入后出]特点的抽象数据结构,可以使用数组或链表实现。
1Stack<Integer> stack = new Stack<>();
我们知道 Java 是不推荐使用 Vector 以及它的子类 Stack 的,因为有更好的替代品,比如:ArrayList、LinkedList,CopyOnWriteArrayList......,当然它也有它的有点,就是它是线程安全的,但也得结合使用场景,比如在单线程无竞争的场景它就是额外的开销了,但是在多线程的环境下也有更好的替代它实现线程安全的方法,所以这里不建议使用。
栈的特性:先入后出也可以使用 LinkedList 来实现,具体实现方法:
Stack
1/**
2 * @author ZhangXiaoYu
3 * @date 2021/9/6 11:50
4 */
5public class TestStack {
6 public static void main(String[] args) {
7 //栈,先入后出,最先入栈的最后出栈。
8 Stack<Integer> stack = new Stack<>();
9 stack.push(1);//元素1 入栈
10 stack.push(2);//元素2 入栈
11 System.out.println(stack.pop());//出栈 --> 元素2
12 System.out.println(stack.pop());//出栈 --> 元素1
13 }
14}
LinkedList
1/**
2 * @author ZhangXiaoYu
3 * @date 2021/9/6 11:52
4 */
5public class TestLinkedList {
6 public static void main(String[] args) {
7 //linkedList同样具有栈的先入后出特性。
8 LinkedList<Integer> linkedList = new LinkedList<>();
9 linkedList.addFirst(1);//元素1 入栈
10 linkedList.addFirst(2);//元素2 入栈
11 System.out.println(linkedList.removeFirst());//出栈 --> 元素2
12 System.out.println(linkedList.removeFirst());//出栈 --> 元素1
13 }
14}