Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Clase Stack de Java: Guía Completa de Uso y Métodos

Clase Stack de Java

Este tutorial explica la clase Stack de Java, sus métodos principales y ejemplos prácticos para dominar las operaciones de pila.

El framework de colecciones de Java incluye una clase Stack que implementa la clásica estructura de datos pila. Según la documentación oficial de Java, Stack extiende Vector, heredando todos sus métodos mientras añade operaciones específicas de pila.


Implementación de Stack

Una pila sigue el principio Último en Entrar, Primero en Salir (LIFO): los elementos se apilan (push) en la cima y se desapilan (pop) desde la cima. El siguiente diagrama ilustra este comportamiento.

Clase Stack de Java: Guía Completa de Uso y Métodos


Creando una Pila (Stack)

Para crear una pila, importa java.util.Stack e instánciala con el tipo genérico deseado:

Stack<Tipo> pila = new Stack<>();

Ejemplos:

// Pila de enteros
Stack<Integer> pilaEnteros = new Stack<>();
// Pila de cadenas
Stack<String> pilaCadenas = new Stack<>();

Métodos de Stack

Más allá de los métodos heredados de Vector, Stack proporciona cinco operaciones dedicadas que la distinguen de las colecciones genéricas. Para una lista completa de métodos de Vector, consulta la documentación de la clase Vector.


Método push()

El método push() añade un elemento en la cima de la pila.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animales = new Stack<>();
        animales.push("Perro");
        animales.push("Caballo");
        animales.push("Gato");
        System.out.println("Pila: " + animales);
    }
}

Salida

Pila: [Perro, Caballo, Gato]

Método pop()

El método pop() elimina y devuelve el elemento en la cima de la pila.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animales = new Stack<>();
        animales.push("Perro");
        animales.push("Caballo");
        animales.push("Gato");
        System.out.println("Pila Inicial: " + animales);
        String eliminado = animales.pop();
        System.out.println("Elemento Eliminado: " + eliminado);
    }
}

Salida

Pila Inicial: [Perro, Caballo, Gato] Elemento Eliminado: Gato

Método peek()

El método peek() recupera el elemento superior sin eliminarlo.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animales = new Stack<>();
        animales.push("Perro");
        animales.push("Caballo");
        animales.push("Gato");
        System.out.println("Pila: " + animales);
        String cima = animales.peek();
        System.out.println("Elemento en la cima: " + cima);
    }
}

Salida

Pila: [Perro, Caballo, Gato] Elemento en la cima: Gato

El método search() devuelve la posición basada en 1 de un elemento desde la cima de la pila, o -1 si no está presente.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animales = new Stack<>();
        animales.push("Perro");
        animales.push("Caballo");
        animales.push("Gato");
        System.out.println("Pila: " + animales);
        int pos = animales.search("Caballo");
        System.out.println("Posición de Caballo: " + pos);
    }
}

Salida

Pila: [Perro, Caballo, Gato] Posición de Caballo: 2

Método empty()

El método empty() verifica si la pila tiene algún elemento.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animales = new Stack<>();
        animales.push("Perro");
        animales.push("Caballo");
        animales.push("Gato");
        System.out.println("Pila: " + animales);
        boolean estaVacia = animales.empty();
        System.out.println("¿Está vacía la pila? " + estaVacia);
    }
}

Salida

Pila: [Perro, Caballo, Gato] ¿Está vacía la pila? false

Usa ArrayDeque en Lugar de Stack

Aunque Stack implementa una pila, se considera heredado (legacy). El código Java moderno prefiere ArrayDeque (que implementa la interfaz Deque) para funcionalidad de pila porque ofrece mejor rendimiento y semántica más clara. Para más detalles, consulta:

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ArrayList en Java: Operaciones, métodos y mejores prácticas
  9. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación