¿Por qué Java.Util.Stack no muestra el último elemento del bucle?

Tengo una pregunta muy básica

Stack<Integer> s=new Stack<integer>();
s.push(New Integer(1));
s.push(New Integer(2));
s.push(New Integer(3));
for(int i=0;i<s.size();i++){
                System.out.println("i: "+i+" size:"+s.size());
                System.out.print(s.pop());
                if(s.size()>=1)
                    System.out.print(" ->");
 }

Esto da como resultado una salida de

3-> 2->

Y no

3-> 2-> 1

¿No debería ejecutarse el ciclo tres veces i < s.size()? ¿Cambia la condición a medida que cambia el tamaño de la pila?

Respuesta 1

¿Está i < s.size()cambiando la condición a medida que cambia el tamaño de la pila?

Sí, porque iaumenta mientras que al mismo tiempo size()disminuye. Recorre la lógica en tu cabeza o en papel.

for ( i = 0, size = 3 )
    pop() ... i++

for ( i = 1, size = 2 )
    pop() ... i++

for ( i = 2, size = 1 )
    loop ends

Normalmente escribiríamos un bucle como este:

while (!s.isEmpty()) {
    Integer e = s.pop();
    ...
}
Respuesta: 2

¿Cómo se puede configurar Seam para usar diferentes restricciones de seguridad para diferentes colecciones de recursos web? En web.xml incluí secciones como <security-constraint> <web-resource -...

Quiero ejecutar una clase de Java para probar piezas de la funcionalidad de una aplicación de Android (desde un módulo de Java) para leer / escribir datos en el archivo. Si ejecuto dentro del módulo Android, ¡obtengo Stub! errores (...

Primero vea este fragmento: public static void main (String [] args) lanza InterruptedException {Thread anotherThread = new Thread (() -> {Integer countB = 0; while (true) {...

Codifiqué una aplicación en Java para mi teléfono Android que usa una conexión de socket para enviar y recibir datos de texto que funciona bien, usa PrintWriter y BufferedReader. Se dijo mucho en el proceso ...