今日、私は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
実装は失敗しました。
それはバグですか、それとも仕様ですか?