Arrays y ArrayList en Java
Aprende la diferencia entre arrays y ArrayList, cómo usarlos correctamente, y evita errores comunes de rendimiento y legibilidad.
Introducción
Los arrays y las listas son estructuras fundamentales para almacenar y trabajar con colecciones de datos. En este capítulo aprenderás a utilizar correctamente Array y ArrayList en Java.
Arrays
Los arrays tienen un tamaño fijo y son muy eficientes cuando sabemos cuántos elementos vamos a manejar. Son ideales para optimizar el uso de memoria.
- Se accede a los elementos por índice.
- El índice comienza en 0.
- No se pueden agregar ni eliminar elementos una vez creado.
ArrayList
Los ArrayList son estructuras dinámicas. Permiten agregar, eliminar y reorganizar elementos de forma sencilla. Son muy usadas en aplicaciones modernas.
- Internamente usan un array redimensionable.
- Permiten almacenar solo objetos, no tipos primitivos.
- Se encuentran en
java.util.
// Declaración de un array fijo
int[] numeros = new int[5];
numeros[0] = 10;
numeros[1] = 20;
// Recorrido de un array con for tradicional
for (int i = 0; i < numeros.length; i++) {
System.out.println(numeros[i]);
}
// Recorrido con for-each
for (int numero : numeros) {
System.out.println(numero);
}
// ArrayList dinámico
import java.util.ArrayList;
ArrayList<String> lenguajes = new ArrayList<>();
lenguajes.add("Java");
lenguajes.add("Kotlin");
lenguajes.add("Python");
// Acceso y modificación
System.out.println(lenguajes.get(1)); // Kotlin
lenguajes.set(1, "Go");
// Eliminar elementos
lenguajes.remove("Python");
// Malas prácticas
// 1. Usar ArrayList cuando el tamaño es fijo
// 2. Recorrer con for tradicional cuando no necesitas el índice
// Buenas prácticas
// 1. Preferir for-each para legibilidad
// 2. Evitar operaciones costosas dentro del bucle
// 3. Usar métodos útiles como contains, indexOf, clear
if (lenguajes.contains("Java")) {
System.out.println("Está en la lista");
}
Buenas prácticas
- Prefiere
for-eachsi no necesitas el índice. - No modifiques la colección mientras la recorres.
- Usa
ArrayListsolo cuando necesites un tamaño dinámico. - Aprovecha métodos como
contains(),isEmpty(),clear()para escribir código más limpio.
Malas prácticas comunes
- Usar un
ArrayListsin necesidad cuando un array simple es suficiente. - Insertar o eliminar muchos elementos en medio de un
ArrayList, lo cual es costoso. - Crear arrays sin inicializarlos adecuadamente, generando errores por
NullPointerException.
Ejemplo Práctico
Imagina que quieres guardar los nombres de lenguajes aprendidos por un estudiante. Puedes usar un ArrayList para agregarlos dinámicamente conforme aprende más:
ArrayList<String> lenguajes = new ArrayList<>();
lenguajes.add("Java");
lenguajes.add("Python");
if (!lenguajes.contains("Kotlin")) {
lenguajes.add("Kotlin");
}
Nota Importante
Usa arrays cuando el tamaño sea fijo y el rendimiento crítico. Usa ArrayList para estructuras más flexibles. Siempre escoge la herramienta adecuada para la situación.
Conclusión
Dominar arrays y listas te permite gestionar colecciones de datos de manera eficiente. Saber cuándo usar cada una es clave para escribir código limpio y optimizado. En el próximo capítulo, veremos cómo trabajar con bucles para automatizar tareas repetitivas.