Skip to content

Instantly share code, notes, and snippets.

@Heipry
Created March 15, 2026 15:04
Show Gist options
  • Select an option

  • Save Heipry/63feb9261dd027e445d79793c5aae473 to your computer and use it in GitHub Desktop.

Select an option

Save Heipry/63feb9261dd027e445d79793c5aae473 to your computer and use it in GitHub Desktop.
RECETARIO DE JAVA: Estructuras de Datos y Colecciones

📖 RECETARIO DE JAVA: Estructuras de Datos y Colecciones

Tu chuleta de supervivencia. Guárdala a mano en una pestaña del navegador cuando programes en Eclipse.

📦 1. ARRAYS Y MATRICES (Tamaño Fijo)

La "estantería" o el "pastillero". Una vez fabricado, no puede crecer ni encoger.

Crear un Array vacío y rellenarlo:

// Reserva el mueble con 5 huecos (posiciones del 0 al 4)
int[] edades = new int[5]; 

// Guarda el 35 en la primera posición
edades[0] = 35; 

Crear, rellenar del tirón y recorrer (for-each):

String[] dias = {"Lunes", "Martes", "Miércoles"};

// El bucle moderno: "Por cada diaActual en la colección dias..."
for (String diaActual : dias) {
    System.out.println(diaActual);
}

📝 2. TEXTOS Y WRAPPERS (Manipulación)

El texto es "inmutable" (se fotocopia) y los envoltorios (Wrappers) convierten texto en números.

Comparar y recortar textos:

String clave = "12345678Z";

// ¡Nunca uses == para textos! Usa .equals()
if (clave.equals("1234")) {
    System.out.println("Acceso concedido");
}

// Recortar un trozo (Ej: Sacar solo los números del DNI, del índice 0 al 7)
String numeros = clave.substring(0, 8); 

Convertir Texto a Número (Wrapper):

String edadTexto = "40";
// Transforma el texto en un int real para poder hacer mates
int edadNum = Integer.parseInt(edadTexto); 
int anoNacimiento = 2026 - edadNum;

🚂 3. LISTAS DINÁMICAS (ArrayList)

El "tren de vagones". Puedes añadir o quitar vagones sobre la marcha. Usa Genéricos <T>.

Crear, añadir y medir:

// La etiqueta <String> obliga a que solo entren textos
ArrayList<String> listaCompra = new ArrayList<>();

// Se colocan uno detrás de otro
listaCompra.add("Leche");
listaCompra.add("Pan");

// En listas usamos .size(), no .length
int totalArticulos = listaCompra.size(); 

Recuperar y borrar:

// Saca el vagón número 1 (el "Pan")
String articulo = listaCompra.get(1); 

// Borrar. Los demás vagones se juntan solos automáticamente
listaCompra.remove("Leche"); // Borra por nombre
listaCompra.remove(0);       // Borra por posición

🔐 4. CONJUNTOS Y MAPAS (Avanzado)

El Álbum de cromos (HashSet) y la Taquilla con llave (HashMap).

Colección sin duplicados (HashSet):

HashSet<String> cromos = new HashSet<>();
cromos.add("Messi");
cromos.add("Messi"); // Esta línea se ignora automáticamente. No hay duplicados.

El Diccionario o Taquilla (HashMap):

// Clave: DNI (String) -> Valor: Nombre (String)
HashMap<String, String> agenda = new HashMap<>();

// Guardar en el Mapa (put)
agenda.put("111A", "Ana");
agenda.put("222B", "Luis");

// Buscar por la Clave (get)
String persona = agenda.get("111A"); // Devuelve "Ana"

Recorrer todo el Mapa (Pedir el llavero keySet):

for (String llaveDni : agenda.keySet()) {
    // Abrimos la taquilla con cada llave para sacar el valor
    String nombre = agenda.get(llaveDni);
    System.out.println("El DNI " + llaveDni + " pertenece a " + nombre);
}

🏗️ 5. ARQUITECTURA Y RECORRIDOS SEGUROS (Nivel Pro)

El secreto de los Genéricos y las Interfaces para escribir código como un profesional.

El truco de las Interfaces (Polimorfismo): List, Set y Map son INTERFACES (solo son el plano o el contrato). Por tanto, ¡nunca puedes construirlas directamente con new! Siempre declaramos la interfaz a la izquierda y construimos la clase concreta a la derecha.

// BIEN: A la izquierda la Interfaz (general), a la derecha la Clase (concreta)
List<String> miLista = new ArrayList<>();
Set<Integer> misNumeros = new HashSet<>();
Map<String, String> miDiccionario = new HashMap<>();

// MAL (Da error de compilación):
// List<String> error = new List<>(); 

El Inspector de Colecciones (Iterator): Imagina una cinta transportadora. El Iterator es la forma 100% segura de recorrer una colección y borrar elementos al mismo tiempo sin que Java sufra un cortocircuito (ConcurrentModificationException).

ArrayList<String> cajas = new ArrayList<>();
cajas.add("Vaso");
cajas.add("Libro roto");
cajas.add("Plato");

// 1. Llamamos al inspector (Iterator)
Iterator<String> inspector = cajas.iterator();

// 2. Mientras la cinta transportadora siga teniendo cajas...
while (inspector.hasNext()) {
    
    // 3. Miramos la siguiente caja
    String cajaActual = inspector.next(); 
    
    // 4. Si la caja está defectuosa, la retiramos de forma segura
    if (cajaActual.equals("Libro roto")) {
        inspector.remove(); 
        System.out.println("Se ha retirado un elemento defectuoso.");
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment