¿Cómo se imprime el reverso de una pila de objetos iterables?

Tienes un error banal en la línea 13, método push () de lo que llamas?

las variantes correctas están a continuación:

foo privado vacío (lista Iterable)
{
Stack stack = new Stack ();
para (Objeto o: lista)
stack.push (o);

while (! stack.empty ())
System.out.println (stack.pop ());
}

barra vacía privada (lista Iterable)
{
// efectivo para tamaños pequeños porque es una matriz
ArrayList objects = new ArrayList ();
para (Objeto o: lista)
objetos.add (o);

for (int i = objects.size (); i> 0;)
System.out.println (objects.get (–i));
}

zic privado vacío (lista Iterable)
{
// efectivo para tamaños grandes porque es una cadena
LinkedList objects = new LinkedList ();
para (Objeto o: lista)
objetos.add (o);

// aquí el iterador será más efectivo
Iterator descendingIterator = objects.descendingIterator ();

while (descendingIterator.hasNext ())
System.out.println (descendingIterator.next ());
}

Hay algo sospechoso en la pregunta .

Dada una colección ordenada, los colocamos en una Pila para lograr una secuencia FILO. Entonces, la pregunta preguntó si podemos obtener la secuencia inversa de la Pila …

Solo recorre la colección original .

Aquí hay una solución en C ++. No sé cómo implementarlo en Java, porque no estoy muy familiarizado con la sintaxis de iterador de Java, pero la idea básica que se me ocurre para imprimir una pila de objetos [math] n [/ math] en orden inverso en [math] O (n) [/ math] el tiempo y [math] O (n) [/ math] la memoria sería crear otra pila y transferir cada elemento de la primera pila a la segunda. Luego, transfiera cada elemento de la segunda pila a la primera, mientras imprime la parte superior de la segunda en cada iteración. En C ++ se vería algo así:

vacío printReverse (std :: stack & st) {
std :: stack
reverse;
while (! st.empty ()) {// empuja st hacia atrás
reverse.push (st.top ());
st.pop ();
}
while (! reverse.empty ()) {// empuja hacia atrás en st
std :: cout << reverse.top () << std :: endl; // imprimir arriba
st.push (reverse.top ());
reverse.pop ();
}
}