🧱 Clase Stack en Java

🧠 Introducción a la clase Stack en Java

En esta lección veremos cómo funciona la clase Stack en Java. Esta clase es genérica, lo que significa que puede almacenar cualquier tipo de objeto: enteros, caracteres, cadenas u objetos personalizados.

📦 ¿Dónde se encuentra?

La clase Stack pertenece al paquete java.util, igual que las demás estructuras de datos de la biblioteca estándar:

import java.util.Stack;

🧩 Creación de un Stack de enteros

Veamos un ejemplo paso a paso:

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        stack.push(10);
        stack.push(20);
        stack.push(30);

        System.out.println(stack);
    }
}

🖥️ Salida esperada:

[10, 20, 30]

💡 Aunque se parece a un array, recuerda: un Stack no es un arreglo, sino una estructura LIFO (Last In, First Out).

📚 Visualización del Stack

graph TD
    subgraph "Estado actual del Stack"
      E3["30 (Top)"]
      E2["20"]
      E1["10 (Base)"]
    end
    style E3 fill:#ffcb77,stroke:#d58f00,stroke-width:2px
    style E2 fill:#fefae0,stroke:#b08968
    style E1 fill:#e9edc9,stroke:#b08968

🔸 El último elemento insertado (30) es el primero que será retirado.

🔸 Este es el principio LIFO — Last In, First Out.

🧱 Operación pop()

El método pop() elimina y devuelve el elemento superior del stack.

int top = stack.pop();
System.out.println("Elemento extraído: " + top);
System.out.println(stack);

🖥️ Salida esperada:

Elemento extraído: 30
[10, 20]

📗 Operación peek()

El método peek() devuelve el elemento superior sin removerlo.

int top = stack.peek();
System.out.println("Elemento en el tope: " + top);

🖥️ Salida esperada:

Elemento en el tope: 20

⚙️ Operación empty()

Podemos verificar si el stack está vacío con empty():

System.out.println(stack.empty());

🖥️ Salida esperada:

false

🔍 Método search() (no recomendado)

La clase Stack también incluye un método search():

System.out.println(stack.search(10));

🖥️ Salida:

2

📌 Sin embargo, este método no se usa comúnmente, porque las pilas no están diseñadas para búsquedas.

🎯 Conclusión

  • Stack es una estructura LIFO: Last In, First Out.

  • Soporta operaciones: push, pop, peek, empty, search.

  • Todas, excepto search, operan en tiempo constante (O(1)).

  • Es ideal para funcionalidades tipo “deshacer”, navegación o evaluación de expresiones.