¿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?

Respuestas a la pregunta(6)

Su respuesta a la pregunta