CodeGym/Blog Java/Random-ES/Java Stack 101: profundizando en la clase de pila
Autor
Aditi Nawghare
Software Engineer at Siemens

Java Stack 101: profundizando en la clase de pila

Publicado en el grupo Random-ES
La pila en Java es una estructura de datos, muy parecida a una cola, una matriz, una lista vinculada o un árbol. Donde se diferencia de los demás es que Java Stack se basa en el principio de último en entrar, primero en salir (LIFO). Lo que esto significa es que cuando usa los dos comandos para agregar y eliminar un elemento de la pila, el primero que elimine siempre será el último que agregó. Echemos un vistazo más de cerca a la clase de pila de Java

Explorando la clase de pila de Java

La clase Java Stack es una extensión de la clase Vector , que a su vez amplía la clase List . Debido a que los vectores son mutables y pueden crecer y reducirse con las demandas de los elementos internos, Stack s también puede cambiar de tamaño a pedido. La extensión de la clase Vector añade cinco operaciones que transforman un Vector en una Pila . Estas cinco operaciones son:
  • .push (elemento E) : coloca un elemento en la parte superior de la pila
  • .pop() : elimina el elemento en la parte superior de la pila y lo devuelve como el valor de la función
  • .peek() : mira el elemento en la parte superior de la pila sin eliminarlo
  • .empty() : función booleana para comprobar si la pila está vacía o no. Devuelve un 0 o un 1.
  • .search(Object o) – Busca o y devuelve su posición. El valor se basa en 1, no en 0
Stack también hereda todos los métodos que forman parte de Vector , incluidos, entre otros, toString() , contains() , indexOf() y lastElement() . Java Stack 101: profundizando en la clase Stack - 1

Codificación de un ejemplo de pila de Java

Ahora que conocemos las funciones de Stack , codifiquemos un ejemplo de pila de Java. Las pilas son muy útiles para manejar datos que deben almacenarse temporalmente y recuperarse rápidamente. Debido a que Stack es LIFO, es excepcionalmente útil para el recorrido de nodos al explorar una estructura de datos de árbol. Antes de entrar en todo eso, creemos una pila básica. El código para implementar una pila es el siguiente:
import java.util.*;

class Main {
  public static void main(String[] args) {
    Stack<Integer> stackExample = new Stack<Integer>();
Eso es todo lo que necesita hacer para crear un Stack vacío . También puede declararlo simplemente sin declarar un tipo de datos usando:
Stack example = new Stack();
Recuerde que debido a que los Stack s son mutables, a medida que insertamos elementos en la pila, se ajustará automáticamente en tamaño. Ahora veamos cómo usar las funciones de pila .

Implementación de la pila de Java

Veamos cómo usar los cinco métodos que exploramos brevemente anteriormente. La implementación de la pila de Java es fácil de recordar si piensa en ella como una pila de platos. Pones platos en la pila, pero para obtener un plato, no vas al fondo, obtienes uno de la parte superior. El último que te pones es el primero que te quitas. Extendiendo nuestro ejemplo anterior con stackExample , las funciones son las siguientes:

Empujar

// pushing integers onto the Stack
    stackExample.push(5);
    stackExample.push(10);
En este punto, vamos a mostrar las otras funciones como si hubiéramos insertado estos dos enteros en el ejemplo de la pila de Java cada vez.

Estallido

//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
Producción:
10
5

Esta vacio

Ahora, supongamos que desea eliminar todos los elementos de una pila , pero no está seguro de cuántos elementos hay. Puede combinar la función Boolean.isEmpty() con una condición previa while loop para extraer todos los elementos de la pila . Mire cómo se realiza esta implementación de la pila Java.
while(!stackExample.isEmpty()) {
  System.out.println(stackExample.pop());
}
Producción
10
5

Ojeada

Podemos usar .peek() como implementación de pila en Java para echar un vistazo al siguiente elemento de la pila sin eliminarlo.
System.out.println(stackExample.peek());
Producción
10
Si sacamos e imprimimos Stack , devolverá 10 y 5 porque el 10 todavía está en la pila. Solo lo miramos, no lo eliminamos con la función emergente. La función peek es una gran herramienta para Stack s en Java.

Buscar

Si queremos encontrar un elemento específico, la implementación de pilas en Java usa .search(e); para encontrarlo.
System.out.println(stackExample.search(5));
Producción
2
Recuerde que esto se debe a que contamos desde la parte superior de la pila y las pilas de Java comienzan en 1, no en 0 como una matriz . Entonces, mirando la pila, es (10) --> (5), y 5 está en el lugar número 2. Si intenta encontrar un elemento que no está en la pila , obtendrá un -1 como resultado.

iterando

Al trabajar con cualquier colección, puede haber momentos en los que necesite buscar varios elementos. Para ahorrar complejidad y tener que buscar en la pila varias veces, puede usar la iteración. Dado que Stack en Java amplía la clase List , existen varias opciones para iterar. Uno de los más fáciles es simplemente usar la función ListIterator . ListIterator es bueno porque te permite recorrer una pila de arriba a abajo o de abajo a arriba usando .hasPrevious() o .hasNext() . Así es como se ve:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());

  while (exampleIterator.hasPrevious()) {
    int iteration = exampleIterator.previous();
    System.out.println(iteration);
  }
Producción
10
5
Tenga en cuenta que cuando itera a través de Stack s en Java, no elimina ningún elemento en él. La iteración esencialmente le permite echar un vistazo a cada elemento de la pila en orden. Cuando haces esto, puedes buscar ubicaciones donde se encuentran ciertos elementos y luego revisarlos y manipularlos. Puede contarlos, eliminarlos o incluso cambiarlos si es necesario.
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios