在Java中,使用for-each
循环遍历栈中的元素非常简单。栈(Stack
)类实现了Iterable
接口,这允许我们使用增强的for
循环来遍历其元素。下面是一个完整的代码示例,展示如何遍历栈中的元素并将其追加到StringBuilder
对象中。
栈底到栈顶的顺序遍历
代码示例
import java.util.Stack;
public class StackTraversalExample {
public static void main(String[] args) {
// 创建一个栈并添加一些字符
Stack<Character> stack = new Stack<>();
stack.push('a');
stack.push('b');
stack.push('c');
stack.push('d');
// 创建一个StringBuilder对象用于构建结果字符串
StringBuilder result = new StringBuilder();
// 使用增强的for循环遍历栈中的每个字符
for (char c : stack) {
result.append(c);
}
// 输出结果字符串
System.out.println(result.toString()); // 输出: abcd
}
}
栈顶到栈底的顺序遍历
- 虽然栈是后进先出(LIFO)的数据结构,但增强的
for
循环遍历栈时,是按从栈底到栈顶的顺序进行的。 - 如果需要按从栈顶到栈底的顺序遍历,可以使用其他方式,如使用标准
for
循环结合pop
方法。
代码示例(按从栈顶到栈底的顺序遍历)
如果你希望按从栈顶到栈底的顺序遍历栈,可以这样做:
import java.util.Stack;
public class StackTraversalExample {
public static void main(String[] args) {
Stack<Character> stack = new Stack<>();
stack.push('a');
stack.push('b');
stack.push('c');
stack.push('d');
StringBuilder result = new StringBuilder();
// 按从栈顶到栈底的顺序遍历
while (!stack.isEmpty()) {
result.append(stack.pop());
}
System.out.println(result.toString()); // 输出: dcba
}
}
在这个示例中,使用while
循环和pop
方法按从栈顶到栈底的顺序遍历栈。每次调用pop
方法都会移除并返回栈顶的元素。