Colecciones Básicas: Arrays y Listas en Java

En Java, las colecciones básicas como arrays y listas son herramientas esenciales para almacenar y manipular conjuntos de datos. Este artículo te enseñará cómo usarlas, sus diferencias y cuándo optar por una u otra.

1. Arrays en Java

Un array es una colección de elementos del mismo tipo con un tamaño fijo. Es eficiente en términos de memoria, pero su tamaño no se puede cambiar una vez definido.

Declaración y creación de un array

Sintaxis:

tipo[] nombre = new tipo[tamaño];

Ejemplo:

public class ArraysBasicos {
    public static void main(String[] args) {
        int[] numeros = new int[5]; // Array de tamaño 5
        numeros[0] = 10;
        numeros[1] = 20;
        numeros[2] = 30;
        System.out.println(numeros[0]); // Imprime 10
    }
}

Inicialización directa:

int[] numeros = {10, 20, 30, 40, 50};

2. Recorrer un array

Puedes iterar a través de un array usando bucles.

Ejemplo con for:

public class RecorrerArray {
    public static void main(String[] args) {
        int[] numeros = {10, 20, 30};
        for (int i = 0; i < numeros.length; i++) {
            System.out.println("Elemento: " + numeros[i]);
        }
    }
}

Ejemplo con for-each:

for (int numero : numeros) {
    System.out.println("Elemento: " + numero);
}

3. Limitaciones de los arrays

  1. Tamaño fijo:
    Una vez creado, no se puede modificar el tamaño del array.
  2. Falta de métodos útiles:
    Los arrays no tienen métodos integrados como búsqueda o eliminación.

4. Listas (ArrayList) en Java

A diferencia de los arrays, las listas son dinámicas, lo que significa que su tamaño puede cambiar. La clase más común es ArrayList, que pertenece al paquete java.util.

Declaración e inicialización de una lista

Sintaxis:

ArrayList<tipo> nombre = new ArrayList<>();

Ejemplo:

import java.util.ArrayList;

public class ListaBasica {
    public static void main(String[] args) {
        ArrayList<String> nombres = new ArrayList<>();
        nombres.add("Ana");
        nombres.add("Luis");
        nombres.add("Carlos");
        System.out.println(nombres.get(1)); // Imprime "Luis"
    }
}

5. Métodos comunes de ArrayList

MétodoDescripciónEjemplo
add(elemento)Añade un elemento al final de la lista.nombres.add("Ana")
add(index, elemento)Inserta un elemento en una posición específica.nombres.add(1, "Luis")
get(index)Obtiene el elemento en una posición dada.nombres.get(0)"Ana"
set(index, elemento)Reemplaza el elemento en una posición dada.nombres.set(0, "Pedro")
remove(index)Elimina un elemento en una posición dada.nombres.remove(1)
size()Devuelve el número de elementos en la lista.nombres.size()3
clear()Elimina todos los elementos de la lista.nombres.clear()
contains(elemento)Verifica si un elemento está en la lista.nombres.contains("Ana")

Ejemplo práctico:

import java.util.ArrayList;

public class MetodosArrayList {
    public static void main(String[] args) {
        ArrayList<Integer> numeros = new ArrayList<>();
        numeros.add(10);
        numeros.add(20);
        numeros.add(30);

        System.out.println("Lista original: " + numeros);
        numeros.set(1, 25); // Cambia el segundo elemento
        System.out.println("Después de set: " + numeros);
        numeros.remove(0); // Elimina el primer elemento
        System.out.println("Después de remove: " + numeros);
    }
}

Salida:

Lista original: [10, 20, 30]
Después de set: [10, 25, 30]
Después de remove: [25, 30]

6. Diferencias entre arrays y listas

CaracterísticaArrayArrayList
TamañoFijo.Dinámico (se ajusta automáticamente).
Métodos útilesNo.Sí (add, remove, size, etc.).
RendimientoMás rápido para accesos directos.Más lento debido a características dinámicas.
Uso comúnCuando el tamaño es fijo.Cuando el tamaño es variable o desconocido.

7. Errores comunes al usar arrays y listas

Índices fuera de rango:

Ocurre cuando intentas acceder a una posición inexistente.

Ejemplo:

int[] numeros = {10, 20};
System.out.println(numeros[2]); // Error: ArrayIndexOutOfBoundsException

Confusión entre arrays y listas:

Un array no tiene métodos como add o remove.

Falta de inicialización:

Si no inicializas un array o lista antes de usarlo, obtendrás un error NullPointerException.

Resumen

  • Los arrays son ideales para estructuras de tamaño fijo, mientras que ArrayList es más flexible.
  • Usa for-each para recorrer colecciones fácilmente.
  • Aprovecha los métodos de ArrayList para manipular datos de forma eficiente.