Ahora que hemos trabajado con arrays, introduzcamos los ArrayLists. Los ArrayLists son parte del Java Collections Framework y proporcionan una forma más flexible de trabajar con listas de objetos. A diferencia de los arrays, los ArrayLists pueden crecer o reducir su tamaño de forma dinámica.
-
Abre el archivo llamado ArrayListDemo.java
en el directorio de tu proyecto.
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// We'll add our code here
}
}
Observa la declaración import
en la parte superior. Esto le dice a Java que queremos usar la clase ArrayList en nuestro programa.
-
Ahora, creemos un ArrayList de Strings. Agrega esta línea dentro del método main
:
ArrayList<String> fruits = new ArrayList<>();
Esto crea un ArrayList vacío que puede contener objetos String. La parte <String>
se llama "genérico" y especifica el tipo de elementos que contendrá el ArrayList.
-
Agreguemos algunos elementos a nuestro ArrayList. Agrega estas líneas:
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
El método add()
agrega elementos al final de la lista.
-
Ahora, imprimamos nuestro ArrayList. Agrega este código:
System.out.println("Fruits in the list:");
for (String fruit : fruits) {
System.out.println(fruit);
}
Esto utiliza un bucle for
mejorado para iterar a través del ArrayList, similar a lo que hicimos con los arrays.
Consejo: Puedes compilar y ejecutar tu programa en cualquier momento para ver la salida. O bien, puedes seguir agregando más código y ejecutarlo todo al final.
-
Los ArrayLists tienen muchos métodos útiles. Probemos algunos. Agrega este código:
System.out.println("\nNumber of fruits: " + fruits.size());
System.out.println("The second fruit is: " + fruits.get(1));
size()
devuelve el número de elementos en el ArrayList, y get(index)
recupera el elemento en el índice especificado.
-
También podemos reemplazar elementos en un ArrayList utilizando el método set()
. Agrega este código:
// Before: [Apple, Banana, Cherry]
fruits.set(1, "Blueberry"); // Replaces "Banana" with "Blueberry"
System.out.println("\nAfter replacing the second fruit:");
System.out.println(fruits); // [Apple, Blueberry, Cherry]
set(index, element)
reemplaza el elemento en el índice especificado con un nuevo elemento. El tamaño del ArrayList permanece igual.
-
A diferencia de los arrays, los ArrayLists nos permiten insertar elementos en cualquier posición utilizando el método add(index, element)
. Esto es diferente de set()
que vimos anteriormente. Veamos cómo funciona add()
:
// Before: [Apple, Blueberry, Cherry]
fruits.add(1, "Blackberry");
System.out.println("\nAfter inserting Blackberry at index 1:");
System.out.println(fruits);
// After: [Apple, Blackberry, Blueberry, Cherry]
Entendamos lo que sucedió:
add(1, "Blackberry")
inserta "Blackberry" en el índice 1
- Los elementos existentes en el índice 1 y posteriores (Blueberry, Cherry) se desplazan automáticamente una posición a la derecha
- El tamaño del ArrayList aumenta en 1
- Esto es diferente de
set()
que reemplazaría el elemento existente sin desplazar ni cambiar el tamaño
Para ayudar a visualizar la diferencia:
// Using add(index, element) - inserts and shifts
fruits.add(1, "Blackberry"); // [Apple, Blackberry, Blueberry, Cherry]
// Using set(index, element) - replaces without shifting
fruits.set(1, "Blackberry"); // [Apple, Blackberry, Cherry]
-
También podemos eliminar elementos de un ArrayList. Agrega este código:
fruits.remove("Cherry");
System.out.println("\nAfter removing Cherry:");
System.out.println(fruits);
Esto elimina la primera aparición de "Cherry" del ArrayList. Cuando se elimina un elemento, los elementos posteriores se desplazan a la izquierda para llenar el espacio.
-
Finalmente, comprobemos si ciertos elementos están en nuestro ArrayList:
System.out.println("\nDoes the list contain Apple? " + fruits.contains("Apple"));
System.out.println("Does the list contain Cherry? " + fruits.contains("Cherry"));
El método contains()
comprueba si el ArrayList contiene un elemento específico y devuelve un valor booleano.
-
Guarda el archivo, luego compila y ejecuta el programa:
javac ~/project/ArrayListDemo.java
java -cp ~/project ArrayListDemo
Deberías ver una salida similar a esta:
Fruits in the list:
Apple
Banana
Cherry
Number of fruits: 3
The second fruit is: Banana
After replacing the second fruit:
[Apple, Blueberry, Cherry]
After inserting Blackberry at index 1:
[Apple, Blackberry, Blueberry, Cherry]
After removing Cherry:
[Apple, Blackberry, Blueberry]
Does the list contain Apple? true
Does the list contain Cherry? false
¡Felicidades! Ahora has creado un ArrayList, agregado y eliminado elementos, accedido a elementos por índice y utilizado varios métodos de ArrayList. Has aprendido las diferencias importantes entre operaciones como add()
que inserta y desplaza elementos, y set()
que reemplaza elementos. Los ArrayLists ofrecen más flexibilidad que los arrays, ya que pueden crecer y reducirse según sea necesario. Esto los hace muy útiles cuando no sabes de antemano cuántos elementos trabajarás.