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:
importjava.util.Stack;
🧩 Creación de un Stack de enteros
Veamos un ejemplo paso a paso:
importjava.util.Stack;publicclass Main {publicstaticvoidmain(String[] args){Stack<Integer> stack =newStack<>(); 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 Stackno 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.