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