Existe um bug no Iterator do java.util.Stack?
Hoje eu estava tentando empurrarjava.util.Stack
classe e, em seguida, usar oIterator
para iterar (sem usar pop) através dos itens. Eu estava esperando propriedade LIFO mas fiquei surpreso.
Aqui está o código que eu estava tentando.
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 + " ");
}
}
A saída do programa acima é dada abaixo:
Algo Stack: 3 2 1 0
Java Stack: 0 1 2 3
No código acimajstack
usa a implementação Java padrão erstack
usa oimplementação fornecida por Robert Sedgewick para sua aula de Algoritmo. Descobri que a implementação do Prof. Robert funciona bem, mas ojava.util.Stack
a implementação falha.
É umerro ou é pordesenhar?