Czy w Iteratorze java.util.Stack jest błąd?
Dzisiaj próbowałem się wcisnąćjava.util.Stack
klasa, a następnie użyjIterator
iterować (bez użycia popu) przez elementy. Spodziewałem się nieruchomości LIFO, ale byłem zaskoczony.
Oto kod, który próbowałem.
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 + " ");
}
}
Dane wyjściowe powyższego programu podano poniżej:
Algo Stack: 3 2 1 0
Java Stack: 0 1 2 3
W powyższym kodziejstack
używa domyślnej implementacji Java irstack
używawdrożenie dostarczone przez Roberta Sedgewicka dla jego klasy Algorytm. Odkryłem, że wdrożenie prof. Roberta działa dobrze, alejava.util.Stack
wdrożenie nie powiedzie się.
To jestpluskwa czy to przezprojekt?