Java Stack堆栈类的用法(图文并茂,附带实例)
堆栈(stack)也称为栈,添加元素和移出元素的操作都被限制在栈的一端,该端称为栈顶,而另一端则称为栈底。栈中的数据以后进先出(Last In First Out,LIFO)的方式进出栈,也就是说先进栈的元素后出栈,而后进栈的元素则先出栈。
栈提供了两个核心操作:进栈,即将某个元素添加到栈集合内;出栈,即将最近添加的元素移出栈集合。
栈中元素的进出都只能在栈顶,我们先来理解进栈(push)操作的过程。如下图所示:

图 1 进栈过程
假如某个时刻栈已经包含了两个元素,此时对“德国”进行 push 操作,“德国”会在最上面。如果再对“英国”进行 push 操作,那么“英国”又会在“德国”上面。
出栈是进栈的反操作,每次出栈都是最上面的元素被取出。通过下图来理解出栈(pop)操作:

图 2 出栈过程
栈最开始有 4 个元素,执行一次 pop 操作后就会把最上面的“英国”取出,再执行一次 pop 操作后则又把此时最上面的“德国”取出。
我们把进栈过程和出栈过程结合起来看,是不是就实现了后进先出的功能了呢?
Stack 只有一种构造方法,创建 Stack 对象时不必传入任何参数,当容量不足时它会自动进行扩容。
Stack 的用法很简单,主要就是 push() 方法和 pop() 方法,下面我们来看个实例:
栈提供了两个核心操作:进栈,即将某个元素添加到栈集合内;出栈,即将最近添加的元素移出栈集合。
栈中元素的进出都只能在栈顶,我们先来理解进栈(push)操作的过程。如下图所示:

图 1 进栈过程
假如某个时刻栈已经包含了两个元素,此时对“德国”进行 push 操作,“德国”会在最上面。如果再对“英国”进行 push 操作,那么“英国”又会在“德国”上面。
出栈是进栈的反操作,每次出栈都是最上面的元素被取出。通过下图来理解出栈(pop)操作:

图 2 出栈过程
栈最开始有 4 个元素,执行一次 pop 操作后就会把最上面的“英国”取出,再执行一次 pop 操作后则又把此时最上面的“德国”取出。
我们把进栈过程和出栈过程结合起来看,是不是就实现了后进先出的功能了呢?
Stack 只有一种构造方法,创建 Stack 对象时不必传入任何参数,当容量不足时它会自动进行扩容。
public Stack()
Stack 的用法很简单,主要就是 push() 方法和 pop() 方法,下面我们来看个实例:
public class StackTest { public static void main(String[] args) { Stack<String> stack = new Stack<String>(); stack.push("中国"); stack.push("美国"); stack.push("德国"); stack.push("英国"); System.out.println("堆栈:" + stack); System.out.println("堆栈大小:" + stack.size()); System.out.println("指定元素索引:" + stack.search("德国")); stack.pop(); System.out.println("堆栈:" + stack); System.out.println("获取栈顶元素:" + stack.peek()); stack.pop(); System.out.println("堆栈:" + stack); } }输出结果为:
堆栈:[中国, 美国, 德国, 英国]
堆栈大小:4
指定元素索引:2
堆栈:[中国, 美国, 德国]
获取栈顶元素:德国
堆栈:[中国, 美国]