La clase Java Stack amplía la clase Vector. Le permite crear nuevos elementos, ver un elemento en la pila, actualizar un elemento en la pila y eliminar todos los elementos de la pila. Apila los datos de proceso en orden FILO (primero en entrar, último en salir). Esto significa que solo puede agregar o eliminar elementos de la parte superior de una pila.
La estructura de datos de pila tiene cinco métodos principales. Sin embargo, la clase Java Stack también tiene acceso a más de 40 otros métodos, que hereda de la clase Vector.
Crear una pila en Java
La clase de pila tiene un solo constructor que le permite crear una pila vacía. Cada pila tiene un argumento de tipo, que dicta el tipo de datos que almacenará.
importar java.util. Pila;
públicoclasePrincipal{
públicoestáticovacíoprincipal(Cadena[] argumentos){
// crea una pila
PilaClientes = nuevo Pila ();
}
}
El código anterior crea una estructura de datos de pila llamada Clientes que almacena valores de cadena.
Llenar una pila
Uno de los cinco métodos principales de la clase Stack es el
empujar() método. Toma un solo elemento que tiene el mismo tipo de datos que la pila y empuja ese elemento a la parte superior de la pila.// llenar una pila
Clientes.push("Jane Doe");
Clientes.push("John Doe");
Clientes.push("Patrick Williams");
Clientes.push("Paul Smith");
Clientes.push("Erick Rowe");
Clientes.push("Ella Jones");
Clientes.push("Jessica Brown");
El código anterior llena la pila de clientes con siete elementos. Empuja cada elemento nuevo a la parte superior de la pila. Entonces, el artículo en la parte superior de la pila de clientes es Jessica Brown. Y puedes confirmar esto usando la Pila ojeada() método. los ojeada() El método no acepta argumentos. Devuelve el objeto en la parte superior de la pila sin eliminarlo.
// ver el objeto en la parte superior de una pila
System.out.println (Clientes.peek());
El código anterior devuelve el siguiente resultado a la consola:
jessica marrón
Ver los elementos en una pila
La estructura de datos de la pila es bastante restrictiva en la forma en que le permite interactuar con sus datos. Debe usar principalmente una pila a través de su elemento superior. Sin embargo, también puede usar métodos heredados de la clase Vector para acceder a elementos arbitrarios. Dichos métodos incluyen elementAt y removeElementAt.
La forma más fácil de obtener una descripción general del contenido de una pila es simplemente imprimirla. Pasar un objeto Stack a Sistema.fuera.println y el método toString() de Stack producirá un buen resumen:
// ver todos los elementos de una pila
System.out.println (Clientes);
El código anterior imprime el siguiente resultado en la consola:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Búsqueda de una posición de elemento en una pila
Si conoce un elemento en la pila, puede identificar su posición de índice o su posición relativa a la parte superior de la pila. los índice de() El método toma un elemento en la pila y devuelve su posición de índice. Tenga en cuenta que una pila comienza a indexar sus elementos en cero.
// encontrar una posición de índice de elemento
System.out.println (Clientes.indexOf("Jane Doe"));
El código anterior imprime el siguiente resultado en la consola:
0
los búsqueda() method es uno de los métodos principales de la clase Stack. Devuelve una posición de elemento relativa a la parte superior de la pila, donde el elemento en la parte superior de la pila tiene la posición número uno.
System.out.println (Clientes.buscar("Jane Doe"));
El código anterior imprime el siguiente resultado en la consola:
7
Si usted proporciona el búsqueda() o el índice de() métodos con un elemento que no está en la pila, devolverán uno negativo.
System.out.println (Clientes.buscar("Elsa Doe"));
System.out.println (Clientes.indexOf("Elsa Doe"));
El código anterior imprime el siguiente resultado en la consola:
-1
-1
Actualización de elementos en una pila
Solo puede manipular un elemento en la parte superior de una pila. Por lo tanto, si desea actualizar un elemento que no se encuentra en la parte superior de la pila, deberá hacer estallar todos los elementos que se encuentran sobre él. los estallido() El método es uno de los métodos principales de Stack. los estallido() El método no acepta argumentos. Elimina el elemento en la parte superior de la pila y lo devuelve.
// actualizar un objeto
Clientes.pop();
Clientes.pop();
Clientes.push("Ella James");
Clientes.push("Jessica Brown");
System.out.println (Clientes);
El código anterior imprime el siguiente resultado en la consola:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Como puede ver en la salida, el código actualiza el apellido de Ella a James. Implica un proceso que extrae elementos de la pila hasta que llega al objeto de destino. Luego hace estallar el objeto de destino; lo actualiza; y lo empuja, junto con los elementos que estaban encima del elemento de destino, de vuelta a la pila. Deberá usar un programa que realice operaciones como la anterior, cada vez que desee actualizar un elemento en su pila.
Eliminación de un elemento de una pila
Para eliminar un solo elemento de la estructura de datos de la pila, puede volver a utilizar el método pop(). Si el elemento que desea eliminar no está en la parte superior, puede abrir elementos en la parte superior hasta llegar al deseado.
Eliminación de todos los elementos de una pila
Para eliminar todos los elementos de una pila, puede utilizar un Ciclo while de Java con el método pop() para eliminar los elementos de uno en uno. Sin embargo, un enfoque más eficiente es utilizar el claro() método. los claro() El método es uno que la clase Stack hereda de la clase Vector. No toma argumentos, no devuelve nada, sino que simplemente elimina todos los elementos dentro de la estructura de datos de Stack.
// elimina todos los elementos de una pila
Clientes.clear();
System.out.println (Clientes.empty());
El código anterior elimina todos los elementos de la pila de clientes. Luego usa el vacío() método para comprobar si la pila está vacía. los vacío() es otro método principal de Java Stack Class. No toma argumentos y devuelve un valor booleano. Este método devuelve verdadero si la pila está vacía y falso en caso contrario.
El código anterior imprime el siguiente resultado en la consola:
verdadero
Aplicaciones prácticas para la estructura de datos de pila
La estructura de datos de Stack es muy restrictiva. No proporciona tanta flexibilidad en el procesamiento de datos como otras estructuras de datos. Esto plantea la pregunta: ¿cuándo debería usar la estructura de datos Stack?
La estructura de datos Stack es ideal para aplicaciones que requieren procesamiento de datos en orden inverso. Éstos incluyen:
- Una aplicación que comprueba si una palabra es un palíndromo.
- Una aplicación que convierte números decimales en números binarios.
- Aplicaciones que permiten a los usuarios deshacer.
- Juegos que permiten al usuario volver a movimientos anteriores, como un juego de ajedrez.