在本教程中,我們將借助示例學(xué)習(xí)Java Stack類及其方法。
Java集合框架具有一個名為Stack的類,該類提供堆棧數(shù)據(jù)結(jié)構(gòu)的功能。
本Stack類繼承Vector類。

在堆棧中,元素以后進先出的方式存儲和訪問。也就是說,元素被添加到堆棧的頂部并從堆棧的頂部移除。

為了創(chuàng)建堆棧,我們必須先導(dǎo)入java.util.Stack包。導(dǎo)入包后,就可以使用Java創(chuàng)建堆棧。
Stack<Type> stacks = new Stack<>();
在此,Type指示堆棧的類型。例如,
//創(chuàng)建整數(shù)類型堆棧 Stack<Integer> stacks = new Stack<>(); //創(chuàng)建字符串類型堆棧 Stack<String> stacks = new Stack<>();
由于Stack繼承了Vector類,因此它繼承了所有方法Vector。要了解不同的Vector方法,請訪問Java Vector Class。
除了這些方法之外,Stack類還包括5個與Vector區(qū)別開來的方法。
要將元素添加到堆棧的頂部,我們使用push()方法。例如,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
//將元素添加到Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
}
}輸出結(jié)果
Stack: [Dog, Horse, Cat]
要從堆棧頂部刪除元素,我們使用pop()方法。例如,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
//將元素添加到 Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("初始堆棧: " + animals);
//刪除堆棧元素,后進先出
String element = animals.pop();
System.out.println("刪除元素: " + element);
}
}輸出結(jié)果
初始堆棧: [Dog, Horse, Cat] 刪除元素: Cat
該peek()方法從堆棧頂部返回一個對象。例如,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
//將元素添加到Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
//從頂部訪問元素,后進先出的原則
String element = animals.peek();
System.out.println("頂部元素: " + element);
}
}輸出結(jié)果
Stack: [Dog, Horse, Cat] 頂部元素: Cat
要搜索堆棧中的元素,我們使用search()方法。它從堆棧的頂部返回元素的位置。例如,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
//將元素添加到Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
//搜索元素
int position = animals.search("Horse");
System.out.println("元素Horse的位置: " + position);
}
}輸出結(jié)果
Stack: [Dog, Horse, Cat] 元素Horse的位置: 2
要檢查堆棧是否為空,我們使用empty()方法。例如,
import java.util.Stack;
class Main {
public static void main(String[] args) {
Stack<String> animals= new Stack<>();
//將元素添加到Stack
animals.push("Dog");
animals.push("Horse");
animals.push("Cat");
System.out.println("Stack: " + animals);
//檢查堆棧是否為空
boolean result = animals.empty();
System.out.println("堆棧是空的嗎? " + result);
}
}輸出結(jié)果
Stack: [Dog, Horse, Cat] 堆棧是空的嗎? false
本Stack類提供直接執(zhí)行堆棧的數(shù)據(jù)結(jié)構(gòu)。但是,建議不要使用它。而是使用ArrayDeque類(實現(xiàn)Deque接口)在Java中實現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)。
要了解更多信息,請訪問:Java ArrayDeque