Stack
Stack是一种先进后出的数据结构:只能往堆栈(Stack)最后压入(push)元素,最后进去的必须最早弹出(pop)来。
Java中Stack的主要方法:
? 把元素压栈:push(E)
? 把栈顶的元素“弹出”:pop()
? 取栈顶元素但不弹出:peek()
Java中Stack的作用
- JVM调用方法时,会创建调用栈,每调用一个方法时,先将参数压栈,然后执行对应的方法;当方法返回时,返回值压栈,调用方法通过出栈操作获得方法返回值。
- 对整数进制转换时,依次除法运算,先将每次余数代表的进制码压栈,最后依次弹出,则为转换后结果。
- 在计算带括号的数学表达式时,利用堆栈把中缀表达式转换为后缀表达式,利用堆栈通过后缀表达式计算结果。
使用
利用Stack原理将整数转换为16进制数:
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();
}
}