¿Hay un error en el iterador de java.util.Stack?
Hoy estaba tratando de empujarjava.util.Stack
clase y luego usar elIterator
para iterar (sin usar pop) a través de los elementos. Esperaba la propiedad de LIFO pero me sorprendió.
Aquí está el código que estaba tratando.
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 + " ");
}
}
La salida del programa anterior se da a continuación:
Algo Stack: 3 2 1 0
Java Stack: 0 1 2 3
En el codigo anteriorjstack
utiliza la implementación predeterminada de Java yrstack
usa elimplementación proporcionada por Robert Sedgewick por su clase de algoritmo. Encontré que la implementación del Prof. Robert funciona bien pero lajava.util.Stack
la implementación falla
Es unainsecto o es pordiseño?