¿Cómo puedo mostrar el contenido de una pila LIFO sin eliminar el contenido en Java?

Estoy tratando de crear un tipo de característica de "historial" que siga las características de LIFO. Última entrada Primera salida.

Por lo tanto, el usuario introducirá algunas palabras que se almacenarán en una pila para imprimirlas después. El programa, resumido, se ve así:

Stack<String> history = new Stack<>();
String word = null;

while (!word.equals(exit)) {

   word = scan.nextLine();

   if (word.equals(show)) {

      showHistory();
   } else {

     history.push(word);
   }
}

Y la showHistory();función tiene este formato:

for (String i : history) {
    System.out.println(i);
}

El problema es que, cuando ejecuto esto, el resultado que obtengo son las palabras que el usuario podría haber introducido pero en un formato FIFO. Por ejemplo, si el usuario introduce:

Lápiz

Libro

Camisa

El resultado que muestra este programa es:

Lápiz

Libro

Camisa

Pero la salida que quiero, siguiendo el formato LIFO es:

Camisa

Libro

Lápiz

Tampoco quiero eliminar los datos que la pila está almacenando en ningún punto de la ejecución, por lo que no quiero usar history.pop();porque, si no me equivoco, eso eliminaría los datos en la pila.

¿Cómo puedo hacer esto?

Gracias por adelantado.

Respuesta 1

Para esto, creará una pila auxiliar que puede contener los elementos emergentes temporalmente:

Stack<String> temp = new Stack<>();
while(!history.isEmpty()){
    System.out.println(history.peek());
    temp.push(history.pop);
}
while(!temp.isEmtpy){
    history.push(temp.pop);
}
Respuesta: 2

Si es libre de usar cualquier clase de Java, ¿podría usar una Deque en lugar de una Pila? Los métodos iterator () y descendingIterator () harían tu trabajo.

https://docs.oracle.com/javase/7/docs/api/java/util/Deque.html

De la documentación de la pila: la interfaz Deque y sus implementaciones proporcionan un conjunto más completo y consistente de operaciones de pila LIFO, que deben usarse con preferencia a esta clase.

Respuesta: 3

Intento iterar sobre ForeignCollection <OrderItems>. Esto funciona si ansioso se establece en verdadero pero la opción perezosa aún no funciona. En primer lugar, hago OrderDataSource orderDS = new OrderDataSource (...

en mi proyecto actualmente estoy usando enlaces directos, estos almacenan archivos específicos que se cargan en el servidor, estas ubicaciones están todas en la carpeta del proyecto (carga de archivos) destinationPDF = D: / ...

Tengo una lista que contiene todos mis datos: setData List <Map <String, Integer >> setData = new ArrayList <Map <String, Integer >> (); Conjunto Map <String, Integer>; y el valor son ...

He creado una página de configuración de cuenta que incorpora múltiples opciones que se abren a través de fragmentos. Sin embargo, parece estar enfrentando un problema que no puedo resolver. He intentado múltiples soluciones pero parece que ...