Java ArrayList
La clase ArrayList es un arreglo que se puede modificar dinámicamente; la diferencia con los arreglos normales es que no tiene un límite de tamaño fijo, podemos agregar o eliminar elementos.
ArrayList hereda de AbstractList e implementa la interfaz List.

La clase ArrayList se encuentra en el paquete java.util; antes de usarla es necesario importarla. El formato de sintaxis es el siguiente:
import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<E> objectName =new ArrayList<>(); // 初始化
- E: tipo de datos genérico, se utiliza para establecer el tipo de datos de objectName,solo puede ser un tipo de datos de referencia.。
- objectName: nombre del objeto.
ArrayList es una cola de arreglo que proporciona funciones relacionadas como agregar, eliminar, modificar y recorrer.
Agregar elementos
La clase ArrayList proporciona muchos métodos útiles; para agregar elementos a un ArrayList se puede usar el método add():
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
El resultado de ejecutar el ejemplo anterior es:
[Google, Ejemplo, Taobao, Weibo]
Acceder a elementos
Para acceder a los elementos de un ArrayList se puede usar el método get():
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.get(1)); // acceder al segundo elemento
}
}
Nota: el índice de un arreglo comienza desde 0.
El resultado de ejecutar el ejemplo anterior es:
Ejemplo
Modificar elementos
Si se desea modificar los elementos de un ArrayList, se puede usar el método set(). El primer parámetro del método set(int index, E element) es el índice, que indica la posición del elemento a reemplazar; el segundo parámetro es el nuevo elemento, que indica el nuevo valor a establecer:
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
sites.set(2, "Wiki"); // el primer parámetro es la posición del índice, el segundo es el valor a modificar
System.out.println(sites);
}
}
El resultado de ejecutar el ejemplo anterior es:
[Google, Ejemplo, Wiki, Weibo]
Eliminar elementos
Si se desea eliminar elementos de un ArrayList, se puede usar el método remove():
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
sites.remove(3); // eliminar el cuarto elemento
System.out.println(sites);
}
}
El resultado de ejecutar el ejemplo anterior es:
[Google, Ejemplo, Taobao]
Calcular tamaño
Si se desea calcular el número de elementos en un ArrayList, se puede usar el método size():
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.size());
}
}
El resultado de ejecutar el ejemplo anterior es:
4
Iterar sobre ArrayList
Podemos usar un bucle for para iterar sobre los elementos del ArrayList:
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
for (int i = 0; i < sites.size(); i++) {
System.out.println(sites.get(i));
}
}
}
El resultado de ejecutar el ejemplo anterior es:
Google Ejemplo Taobao Weibo
También se puede usar for-each para iterar sobre los elementos:
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Ejemplo");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
El resultado de ejecutar el ejemplo anterior es:
Google Ejemplo Taobao Weibo
Otros tipos de referencia
Los elementos de un ArrayList son en realidad objetos; en los ejemplos anteriores, los elementos de la lista son todos de tipo cadena String.
Si queremos almacenar otros tipos, y <E> solo puede ser un tipo de datos de referencia, entonces necesitamos usar las clases envolventes de los tipos primitivos.
La tabla de las clases envolventes correspondientes a los tipos primitivos es la siguiente:
| Tipo primitivo | Tipo de referencia |
|---|---|
| boolean | Boolean |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
Además, BigInteger y BigDecimal se utilizan para operaciones de alta precisión. BigInteger admite enteros de precisión arbitraria, y también son tipos de referencia, pero no tienen tipos primitivos correspondientes.
ArrayList<Integer> li=new ArrayList<>(); // 存放整数元素 ArrayList<Character> li=new ArrayList<>(); // 存放字符元素
El siguiente ejemplo usa ArrayList para almacenar números (usando el tipo Integer):
Ejemplo
public class EjemploTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);
for (int i : myNumbers) {
System.out.println(i);
}
}
}
El resultado de ejecutar el ejemplo anterior es:
10 15 20 25
Ordenamiento de ArrayList
La clase Collections también es una clase muy útil, se encuentra en el paquete java.util, y su método sort() puede ordenar listas de caracteres o números.
El siguiente ejemplo ordena letras:
Ejemplo
import java.util.Collections; // importar la clase Collections
public class EjemploTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Taobao");
sites.add("Wiki");
sites.add("Ejemplo");
sites.add("Weibo");
sites.add("Google");
Collections.sort(sites); // ordenar letras
for (String i : sites) {
System.out.println(i);
}
}
}
El resultado de ejecutar el ejemplo anterior es:
Google Ejemplo Taobao Weibo Wiki
El siguiente ejemplo ordena números:
Ejemplo
import java.util.Collections; // importar la clase Collections
public class EjemploTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(33);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(34);
myNumbers.add(8);
myNumbers.add(12);
Collections.sort(myNumbers); // ordenar números
for (int i : myNumbers) {
System.out.println(i);
}
}
}
El resultado de ejecutar el ejemplo anterior es:
8 12 15 20 33 34
Métodos de Java ArrayList
La lista de métodos comunes de Java ArrayList es la siguiente:
| Método | Descripción |
|---|---|
| add() | Inserta un elemento en el ArrayList en la posición especificada. |
| addAll() | Agrega todos los elementos de una colección al ArrayList. |
| clear() | Elimina todos los elementos del ArrayList. |
| clone() | Copia un ArrayList. |
| contains() | Determina si un elemento está en el ArrayList. |
| get() | Obtiene el elemento del ArrayList mediante el índice. |
| indexOf() | Devuelve el índice del elemento en el ArrayList. |
| removeAll() | Elimina todos los elementos del ArrayList que existen en la colección especificada. |
| remove() | Elimina un solo elemento del ArrayList. |
| size() | Devuelve el número de elementos del ArrayList. |
| isEmpty() | Determina si el ArrayList está vacío. |
| subList() | Extrae una parte de los elementos del ArrayList. |
| set() | Reemplaza el elemento en el índice especificado del ArrayList. |
| sort() | Ordena los elementos del ArrayList. |
| toArray() | Convierte el ArrayList en un arreglo. |
| toString() | Convierte el ArrayList en una cadena. |
| ensureCapacity() | Establece la capacidad especificada del ArrayList. |
| lastIndexOf() | Devuelve la última posición del elemento especificado en el ArrayList. |
| retainAll() | Conserva los elementos del ArrayList que también existen en la colección especificada. |
| containsAll() | Comprueba si el ArrayList contiene todos los elementos de la colección especificada. |
| trimToSize() | Ajusta la capacidad del ArrayList al número de elementos del arreglo. |
| removeRange() | Elimina los elementos del ArrayList que existen entre los índices especificados. |
| replaceAll() | Reemplaza cada elemento del arreglo con el resultado de la operación dada. |
| removeIf() | Elimina todos los elementos del ArrayList que cumplen una condición específica. |
| forEach() | Recorre cada elemento del ArrayList y ejecuta una operación específica. |
Puedes consultar más métodos de API en:https://www.example.com/manual/jdk11api/java.base/java/util/ArrayList.html
Otras extensiones
Java Collection Framework