Stack
Stack是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu):只能往堆棧(Stack)最后壓入(push)元素,最后進(jìn)去的必須最早彈出(pop)來。
Java中Stack的主要方法:
? 把元素壓棧:push(E)
? 把棧頂?shù)脑亍皬棾觥保簆op()
? 取棧頂元素但不彈出:peek()
Java中Stack的作用
- JVM調(diào)用方法時,會創(chuàng)建調(diào)用棧,每調(diào)用一個方法時,先將參數(shù)壓棧,然后執(zhí)行對應(yīng)的方法;當(dāng)方法返回時,返回值壓棧,調(diào)用方法通過出棧操作獲得方法返回值。
- 對整數(shù)進(jìn)制轉(zhuǎn)換時,依次除法運算,先將每次余數(shù)代表的進(jìn)制碼壓棧,最后依次彈出,則為轉(zhuǎn)換后結(jié)果。
- 在計算帶括號的數(shù)學(xué)表達(dá)式時,利用堆棧把中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,利用堆棧通過后綴表達(dá)式計算結(jié)果。
使用
利用Stack原理將整數(shù)轉(zhuǎn)換為16進(jìn)制數(shù):
import java.util.*;
public class Main {
public static void main(String[] args) {
int n = 12500;
String hex = toHex(n);
if (hex.equalsIgnoreCase("30D4")) {
System.out.println("測試通過");
} else {
System.out.println("測試失敗");
}
}
static String toHex(int n) {
Stack<String> hexStack = new Stack<>();
while (n != 0) {
int xuShu = n % 16;
hexStack.push("%x".formatted(xuShu));
n = n / 16;
}
StringBuilder hexString = new StringBuilder();
while (hexStack.size() > 0) {
hexString.append(hexStack.pop());
}
return hexString.toString();
}
}