今天我试图推入java.util.Stack
课堂,然后使用Iterator
迭代(不使用弹出)通过项目。我期待 LIFO 财产,但感到惊讶。
这是我正在尝试的代码。
import java.util.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
RobStack<Integer> rstack = new RobStack<Integer>(); // Correct Implementation
Stack<Integer> jstack = new Stack<Integer>(); // Default Java Implementation
rstack.push(0); jstack.push(0);
rstack.push(1); jstack.push(1);
rstack.push(2); jstack.push(2);
rstack.push(3); jstack.push(3);
System.out.print("Algo Stack: ");
for (int i : rstack)
System.out.print(i + " ");
System.out.print("\nJava Stack: ");
for (int i : jstack)
System.out.print(i + " ");
}
}
上述程序的输出如下:
Algo Stack: 3 2 1 0
Java Stack: 0 1 2 3
在上面的代码jstack
中使用了默认的 Java 实现,并rstack
使用了Robert Sedgewick为他的 Algorithm 类提供的实现。我发现罗伯特教授的实施工作正常,但java.util.Stack
实施失败。
这是一个错误还是设计使然?