Bienvnidos sean a este post, hoy hablaremos sobre una clase que en realidad es una subclase de Vector la cual implementa un metodo de pila donde el ultimo en entrar (Last-In) sera el primero en salir (First-Out), esta clase solo tiene un tipo de constructor, el constructor predeterminado, luego hereda muchos de los metodos de Vector y a su vez agrega algunos propios, a continuacion veremos algunos de ellos:

  • boolean empty(), chequea si el stack esta vacio, en caso de estar vacio devuelve un verdadero y en caso de contener algun elemento devuelve un falso
  • Object peek(), devuelve el elemento en la cima del stack sin removerlo
  • Object pop(), devuelve el elemento en la cima del stack y a su vez lo remueve
  • Object push(Object o), empuja el elemento en la cima del stack y a su vez devuelve el elemento
  • int search(Object o), busca el elemento en el stack, en caso de encontrarlo devuelve su desplazamiento en el stack de lo contrario devuelve -1

Pasemos a ver un ejemplo para comprender un poco mejor este concepto, para ello crearemos el siguiente ejemplo:

StackDemo.java:

import java.util.*;

public class StackDemo
{
        static void showpush(Stack st, int a)
        {
                st.push(new Integer(a));
                System.out.println("push(" + a + ")");
                System.out.println("stack: " + st);
        }

        static void showpop(Stack st)
        {
                System.out.print("pop -> ");
                Integer a = (Integer) st.pop();
                System.out.println(a);
                System.out.println("stack: " + st);
        }

        public static void main(String[] args)
        {
                Stack st = new Stack();
                System.out.println("stack: " + st);
                showpush(st, 42);
                showpush(st, 66);
                showpush(st, 99);
                showpop(st);
                showpop(st);
                showpop(st);
                try
                {
                        showpop(st);
                }
                catch(EmptyStackException e)
                {
                        System.out.println("Stack vacio");
                }
        }
}

En esta clase primero crearemos dos metodos, uno llamado showpush(), el cual recibira el stack a modificar y luego ingresara el valor a la cima del mismo el valor informado, nos mostrara cual fue el valor ingresado y como quedo el stack, nuestro siguiente metodo showpop() recibira el stack, el cual se encargara de devolvernos el valor en la cima del stack pero a su vez lo removera para luego volver a mostrar como quedo el stack, en el main() crearemos el stack, su estado actual, luego agregaremos tres valores por medio showpush(), luego los mostraremos por medio showpop() para finalmente por medio de un bloque try/catch, chequearemos el stack y en caso de estar vacio, EmptyStackException, nos mostrara el mensaje, si lo compilamos y ejecutamos obtendremos la siguiente salida:

tinchicus@dbn001vrt:~/programacion/java/codigo$ java StackDemo
stack: []
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: []
pop -> Stack vacio
tinchicus@dbn001vrt:~/programacion/java/codigo$

Observen como a medida que nosotros ingresamos valores estos se van a acomodando al final del stack y cuando los removemos son los primeros en salir para finalmente quedar vacio.

En resumen, hoy hemos visto de que trata la subclase Stack, como trabaja, como se utiliza, y que funciones podemos crear con ella, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios