java stack tutorial stack class implementation with examples
Este tutorial explica qué es Stack en Java, Java Stack Class, Stack API Methods, Stack Implementation usando Array & Linked List con la ayuda de Ejemplos:
Una pila es una estructura de datos ordenada que pertenece a Java Collection Framework. En esta colección, los elementos se agregan y eliminan de un solo extremo. El final en el que se agregan y eliminan los elementos se denomina 'Parte superior de la pila'.
Como la adición y la eliminación se realizan solo en un extremo, el primer elemento agregado a la pila es el último elemento eliminado de la pila. Por lo tanto, la pila se denomina estructura de datos LIFO (último en entrar, primero en salir).
=> Eche un vistazo a la guía para principiantes de Java aquí
Lo que vas a aprender:
- Colección de pila de Java
- Conclusión
Colección de pila de Java
A continuación se muestra una representación gráfica de la pila.
Como se muestra en la secuencia de representación anterior, inicialmente la pila está vacía y la parte superior de la pila se establece en -1. Luego iniciamos una operación 'push' que se usa para agregar un elemento a la pila.
Entonces, en la segunda representación, presionamos el elemento 10. En este punto, la parte superior se incrementa. De nuevo empujamos el elemento 20 en la pila incrementando de ese modo la parte superior además.
En la última representación, iniciamos una operación 'pop'. Esta operación se utiliza para eliminar un elemento de la pila. La operación emergente elimina un elemento que actualmente apunta a 'Arriba'.
Una estructura de datos de pila admite las siguientes operaciones:
- Empujar: Agrega un elemento a la pila. Como resultado, se incrementa el valor de la parte superior.
- Pop: Se elimina un elemento de la pila. Después de la operación pop, el valor de la parte superior se reduce.
- Ojeada: Esta operación se utiliza para buscar o buscar un elemento. El valor de la parte superior no se modifica.
La parte superior de la pila que se usa como un final para agregar / quitar elementos de la pila también puede tener varios valores en un instante particular. Si el tamaño de la pila es N, entonces la parte superior de la pila tendrá los siguientes valores en diferentes condiciones dependiendo del estado en el que se encuentre la pila.
Estado de la pila | Valor superior |
---|---|
Pila vacía | -1 |
Un elemento en la pila | 0 |
Pila llena | N-1 |
Desbordamiento (elementos> N) | norte |
Clase de pila en Java
Java Collection Framework proporciona una clase denominada 'Pila'. Esta clase Stack extiende la clase Vector e implementa la funcionalidad de la estructura de datos Stack.
El siguiente diagrama muestra la jerarquía de la clase Stack.
Como se muestra en el diagrama anterior, la clase Stack hereda la clase Vector que a su vez implementa la interfaz List Interface of Collection.
La clase Stack es parte del paquete java.util. Para incluir la clase Stack en el programa, podemos usar la declaración de importación de la siguiente manera.
|_+_|o
|_+_|Crear una pila en Java
Una vez que importamos la clase Stack, podemos crear un objeto Stack como se muestra a continuación:
|_+_|También podemos crear un tipo genérico de objeto de clase Stack de la siguiente manera:
|_+_|Aquí data_type puede ser cualquier tipo de datos válido en Java.
Por ejemplo ,podemos crear los siguientes objetos de la clase Stack.
|_+_|Apilar métodos de API en Java
La clase Stack proporciona métodos para agregar, eliminar y buscar datos en Stack. También proporciona un método para comprobar si la pila está vacía. Discutiremos estos métodos en la siguiente sección.
Operación de empuje de pila
La operación de empujar se usa para empujar o agregar elementos a la pila. Una vez que creamos una instancia de pila, podemos usar la operación push para agregar los elementos del tipo de objeto de pila a la pila.
El siguiente fragmento de código se utiliza para inicializar una pila de enteros con los valores.
|_+_|La pila inicial obtenida como resultado de la ejecución del código anterior se muestra a continuación:
Si realizamos otra operación push () como se muestra a continuación,
|_+_|La pila resultante será:
Operación Stack Pop
Podemos eliminar el elemento de la pila usando la operación 'pop'. El elemento señalado por la parte superior en este momento se saca de la pila.
El siguiente fragmento de código logra esto.
|_+_|La variable val contendrá el valor 200, ya que fue el último elemento introducido en la pila.
La representación de la pila para la operación push y pop es la siguiente:
Operación Stack Peek
La operación de inspección devuelve la parte superior de la pila sin eliminar el elemento. En el ejemplo de pila anterior, 'intStack.peek ()' devolverá 200.
La pila está vacía
La operación isEmpty () de la clase Stack comprueba si el objeto de la pila está vacío. Devuelve verdadero si la pila no tiene elementos; de lo contrario, devuelve falso.
Operación de búsqueda de pila
Podemos buscar un elemento en la pila usando la operación search (). La operación search () devuelve el índice del elemento que se busca. Este índice se cuenta desde la parte superior de la pila.
|_+_|Tamaño de la pila
El tamaño del objeto Stack viene dado por el java.util.Stack.size () método. Devuelve el número total de elementos de la pila.
El siguiente ejemplo imprime el tamaño de la pila.
|_+_|Imprimir / iterar elementos de pila
Podemos declarar un iterador para la pila y luego atravesar toda la pila usando este iterador. De esta forma podemos visitar e imprimir cada elemento de la pila uno por uno.
El siguiente programa muestra la forma de iterar Stack usando un iterador.
|_+_|Producción:
Elementos de pila:
PUNE MUMBAI NASHIK
Apilar usando Java 8
También podemos imprimir o recorrer los elementos de la pila utilizando características de Java 8 como las API de Stream, forEach y forEachRemaining.
El siguiente programa demuestra el uso de construcciones de Java 8 para recorrer la pila.
|_+_|Producción:
Apilar elementos usando Java 8 para cada uno:
PUNE MUMBAI NASHIK
Apilar elementos usando Java 8 para cada remanente:
PUNE MUMBAI NASHIK
Implementación de pila en Java
El siguiente programa implementa la pila detallada demostrando las diversas operaciones de pila.
|_+_|Producción:
Pila inicial: ()
¿La pila está vacía? : cierto
Apilar después de la operación de empujar: (10, 20, 30, 40)
Elemento salido: 40
Pila después de la operación Pop: (10, 20, 30)
Elemento 10 encontrado en la posición: 3
¿La pila está vacía? : falso
cual es el mejor antivirus con VPN
Apilar a matriz en Java
La estructura de datos de la pila se puede convertir en una matriz utilizando el método 'toArray ()' de la clase Stack.
El siguiente programa demuestra esta conversión.
|_+_|Producción:
El contenido de la pila: (PUNE, MUMBAI, NASHIK)
El contenido de la matriz:
PUNE MUMBAI NASHIK
Implementación de pila en Java usando Array
La pila se puede implementar mediante una matriz. Todas las operaciones de pila se llevan a cabo utilizando una matriz.
El siguiente programa demuestra la implementación de Stack usando una matriz.
|_+_|Producción:
Pila inicial vacía: verdadero
Después de la operación Push ...
Impresión de elementos de pila… ..
40 30 20 10
Artículo reventado: 40
Objeto reventado: 30
Después de la operación Pop ...
Impresión de elementos de pila… ..
20 10
Implementación de pila mediante lista vinculada
La pila también se puede implementar usando una lista enlazada tal como lo hemos hecho usando matrices. Una ventaja de utilizar una lista vinculada para implementar la pila es que puede crecer o reducirse dinámicamente. No necesitamos tener una restricción de tamaño máximo como en las matrices.
El siguiente programa implementa una lista vinculada para realizar operaciones de pila.
|_+_|Producción:
Elementos de pila:
1->3->5->7->9->
Parte superior de la pila: 1
Pop dos elementos
Elementos de pila:
5->7->9->
Nueva pila superior: 5
Preguntas frecuentes
P # 1) ¿Qué son las pilas en Java?
Responder: Una pila es una estructura de datos LIFO (último en entrar, primero en salir) para almacenar elementos. Los elementos de la pila se agregan o quitan de la pila desde un extremo llamado Parte superior de la pila.
La adición de un elemento a la pila se realiza mediante la operación Push. La eliminación de elementos se realiza mediante la operación pop. En Java, una pila se implementa utilizando la clase Stack.
P # 2) ¿Stack es una colección en Java?
Responder: Si. La pila es una colección heredada en Java que está disponible en Collection API en Java 1.0 en adelante. Stack hereda la clase Vector de la interfaz List.
P # 3) ¿Stack es una interfaz?
Responder: La pila de interfaces es una interfaz que describe la estructura de último en entrar, primero en salir y se utiliza para almacenar el estado de problemas recursivos.
P # 4) ¿Para qué se utilizan las pilas?
Respuesta: Las siguientes son las principales aplicaciones de la pila:
- Conversiones y evaluación de expresiones: Stack se utiliza para convertir expresiones en sufijo, infijo y prefijo. También se utiliza para evaluar estas expresiones.
- La pila también se utiliza para analizar árboles de sintaxis.
- La pila se utiliza para comprobar los paréntesis en una expresión.
- La pila se utiliza para resolver problemas de retroceso.
- Las llamadas a funciones se evalúan mediante pilas.
P # 5) ¿Cuáles son las ventajas de la pila?
Responder: Las variables almacenadas en la pila se destruyen automáticamente cuando se devuelven. Las pilas son una mejor opción cuando se asigna y desasigna memoria. Las pilas también limpian la memoria. Aparte de eso, las pilas se pueden usar de manera efectiva para evaluar expresiones y analizar las expresiones.
Conclusión
Esto completa nuestro tutorial sobre pilas en Java. La clase Stack es parte de la API de recopilación y admite operaciones de inserción, extracción, inspección y búsqueda. Los elementos se agregan o eliminan de la pila en un solo extremo. Este extremo se llama la parte superior de la pila.
En este tutorial, hemos visto todos los métodos admitidos por la clase de pila. También hemos implementado la pila usando matrices y listas enlazadas.
Continuaremos con otras clases de recopilación en nuestros tutoriales posteriores.
=> Lea la serie de formación Easy Java
Lectura recomendada
- Tutorial de reflexión de Java con ejemplos
- Tutorial de la clase Java Scanner con ejemplos
- ¿Qué es una HashTable de Java - Implementación y ejemplo de HashTable?
- ¿Qué es Java Vector | Tutorial de clase de vector de Java con ejemplos
- Tutorial de clase de matriz de Java - clase java.util.Arrays con ejemplos
- Conceptos básicos de Java: sintaxis de Java, clase de Java y conceptos básicos de Java
- LinkedHashMap en Java - Ejemplo e implementación de LinkedHashMap
- Tutorial de Java SWING: contenedor, componentes y manejo de eventos