标题:Java堆栈类使用实例
堆栈概述
堆栈(Stack)是一种特殊的线性数据结构,它只允许在一端进行插入和删除操作。堆栈遵循先进后出(Last-In-First-Out)的原则,即最后插入的元素最先删除。
Java中提供了Stack类来实现堆栈,Stack类继承了Vector类,并添加了支持堆栈的方法。
Stack类的常用方法
Stack类提供了以下常用方法:
- push(Object item):将元素压入堆栈顶部。
- peek():查看堆栈顶部的对象,但不从堆栈中移除它。
- pop():移除堆栈顶部的对象,并作为此函数的值返回该对象。
- empty():测试堆栈是否为空。
- search(Object o):返回对象在堆栈中的位置(以1为基数)。如果对象不在堆栈中,则返回 -1。
使用实例
示例一
我们通过以下代码来展示如何使用Stack类:
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
// 创建一个堆栈对象
Stack<String> stack = new Stack<String>();
// 将元素压入堆栈顶部
stack.push("A");
stack.push("B");
stack.push("C");
// 查看堆栈顶部的对象,但不从堆栈中移除它
System.out.println("堆栈顶部的对象是:" + stack.peek());
// 移除堆栈顶部的对象,并作为此函数的值返回该对象
String top = stack.pop();
// 输出弹出的对象
System.out.println("弹出的对象是:" + top);
// 测试堆栈是否为空
System.out.println("堆栈是否为空:" + stack.empty());
// 搜索指定元素在堆栈中的位置,并输出
int index = stack.search("B");
System.out.println("元素B在堆栈中的位置是:" + index);
}
}
输出结果:
堆栈顶部的对象是:C
弹出的对象是:C
堆栈是否为空:false
元素B在堆栈中的位置是:2
示例二
我们可以利用Stack类实现括号匹配的功能,代码如下:
import java.util.Stack;
public class BracketMatching {
public static boolean isMatched(String s) {
Stack<Character> stack = new Stack<Character>();
// 遍历字符串
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// 左括号入栈
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
}
// 右括号出栈匹配
if (c == ')' || c == ']' || c == '}') {
// 如果栈为空则直接返回false
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if (c == ')' && top != '(') {
return false;
}
if (c == ']' && top != '[') {
return false;
}
if (c == '}' && top != '{') {
return false;
}
}
}
// 如果栈不为空则返回false
if (!stack.isEmpty()) {
return false;
}
return true;
}
public static void main(String[] args) {
String input = "()[]{}";
boolean result = isMatched(input);
if (result) {
System.out.println("括号匹配成功");
} else {
System.out.println("括号匹配失败");
}
}
}
输出结果:
括号匹配成功
总结
通过以上两个示例说明,我们可以看出Stack类的强大之处,它可以轻松地实现各种堆栈相关的功能,如括号匹配等。在使用Stack类时要注意空栈的情况及元素类型的统一性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java堆栈类使用实例(java中stack的使用方法) - Python技术站