¿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&nbsp;utiliza la implementación predeterminada de Java yrstack&nbsp;usa elimplementación proporcionada por Robert Sedgewick&nbsp;por su clase de algoritmo. Encontré que la implementación del Prof. Robert funciona bien pero lajava.util.Stack&nbsp;la implementación falla

Es unainsecto&nbsp;o es pordiseño?