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
- Tamaño fijo:
Una vez creado, no se puede modificar el tamaño del array. - 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étodo | Descripción | Ejemplo |
---|---|---|
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ística | Array | ArrayList |
---|---|---|
Tamaño | Fijo. | Dinámico (se ajusta automáticamente). |
Métodos útiles | No. | Sí (add , remove , size , etc.). |
Rendimiento | Más rápido para accesos directos. | Más lento debido a características dinámicas. |
Uso común | Cuando 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.