Estructuras de Datos en Java: Listas, Pilas, Colas y Conjuntos (con Ejemplos)

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,9 KB

Estructuras de Datos en Java: Referencia Rápida


📌 Interfaces e implementaciones

List<T> lista = new ArrayList<>();
List<T> lista = new LinkedList<>();

✅ Métodos básicos

MétodoDescripción
add(elemento)Añade al final
add(pos, elemento)Inserta en la posición dada
get(pos)Devuelve el elemento en la posición
set(pos, nuevoElemento)Sustituye el elemento en esa posición
remove(pos)Elimina el elemento en la posición
indexOf(elemento)Devuelve el índice del elemento (o -1)
contains(elemento)¿Está en la lista? → true/false
size()Tamaño de la lista
isEmpty()¿Lista vacía? → true/false
clear()Vacía la lista


🔁 Recorrer una lista

// for clásico
for (int i = 0; i < lista.size(); i++) {
    System.out.println(lista.get(i));
}

// for-each
for (T elem : lista) {
    System.out.println(elem);
}

🧪 Ejemplo exprés

List<String> nombres = new ArrayList<>();
nombres.add("Ana");
nombres.add("Luis");
nombres.add(1, "Pedro");
nombres.set(0, "María");
nombres.remove(2);
System.out.println(nombres.get(0)); // María
System.out.println(nombres.size()); // 2


🎓 PILAS (Stack<E>)

Crear pila:

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

Métodos:

  • push(E e): apila (mete un elemento).

  • pop(): desapila (saca el elemento superior).

  • peek(): consulta el elemento superior sin eliminarlo.

  • isEmpty(): verifica si la pila está vacía.

  • search(E e): devuelve la posición (1 es la cima) o -1 si no está.

Recorrer con Iterator:

Iterator<T> it = pila.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

Ejemplo:

Stack<Integer> pila = new Stack<>();
pila.push(1);
pila.push(2);
System.out.println(pila.pop()); // 2
System.out.println(pila.peek()); // 1


🚶 COLAS (Queue<E>, LinkedList<E>, Deque<E>)

Crear cola:

Queue<T> cola = new LinkedList<>();
Deque<T> colaDoble = new LinkedList<>();

Métodos:

  • add(E e) / offer(E e): añadir.

  • poll(): eliminar y devolver cabeza.

  • peek(): ver cabeza sin eliminar.

  • isEmpty(): vacía o no.

Recorrer cola:

for (T elem : cola) {
    System.out.println(elem);
}

Recorrer cola inversa:

Iterator<T> it = ((LinkedList<T>) cola).descendingIterator();
while (it.hasNext()) {
    System.out.println(it.next());
}


🔹 LISTAS (List<E>, ArrayList, LinkedList)

Crear lista:

List<T> lista = new ArrayList<>();

Métodos clave:

  • add(e) / add(i, e)

  • get(i), set(i, e), remove(i)

  • size(), isEmpty()

  • contains(e), indexOf(e)

  • clear()

Ordenar:

Collections.sort(lista); // si los elementos son comparables
lista.sort(Comparator.comparing(Alumno::getNota).reversed());

Recorrer:

for (T e : lista) {
    System.out.println(e);
}


🔍 CONJUNTOS (Set<E>, HashSet, TreeSet)

Crear conjunto:

Set<T> conjunto = new HashSet<>(); // no ordenado
Set<T> conjuntoOrdenado = new TreeSet<>(); // ordenado

Métodos:

  • add(e), remove(e)

  • contains(e), isEmpty(), size()

  • clear(), addAll(otroSet)

  • Operaciones de conjuntos: retainAll(), removeAll(), etc.


✍️ SINTAXIS BÁSICA PARA ARCHIVOS

BufferedReader br = new BufferedReader(new FileReader("archivo.txt"));
String linea;
while ((linea = br.readLine()) != null) {
    // Procesar la linea
}
br.close();


⚡ COMPARADORES

Y CLASES PERSONALIZADAS

Clase ejemplo:

class Alumno {
    String nombre;
    double nota;

    // Constructor, getters, setters...
}

Ordenar por nota descendente:

lista.sort((a, b) -> Double.compare(b.getNota(), a.getNota()));

🔥 COSAS CLAVE

  • Usa Stack para problemas tipo "último en entrar, primero en salir" (p. ej. paréntesis, inversiones).

  • Usa Queue para procesos secuenciales (colas de espera, turnos).

  • Usa Deque para recorridos en ambas direcciones.

  • Usa Set para eliminar duplicados y comparar ingredientes.

  • Ordena listas con Comparator o Comparable según el caso.

Entradas relacionadas: