Un array es una estructura de datos muy extendida y esencial en todos los lenguajes de programación, con una desventaja: su tamaño es fijo. Veamos cómo ArrayList en Java puede ayudar con esto.
Un array puede ser de dos tipos: un array estático o un array dinámico. Un array no puede aumentarse dinámicamente en lenguajes de programación como Java. En su lugar, el tamaño del array se declara durante la inicialización del array. Pero, en muchos casos, esto puede dar lugar a muchos problemas. Para resolver este problema, en Java se utilizan las ArrayLists. El tamaño del array aumenta automáticamente cuando se introduce un elemento en un ArrayList.
En este artículo, aprenderá sobre ArrayLists en Java. Comprenderá la diferencia fundamental entre Array y ArrayList y también aprenderá sobre los diferentes tipos de ArrayLists y cómo utilizarlos.
Array vs. ArrayList
La principal diferencia entre un Array y un ArrayList es que el tamaño de un Array es estático, pero el de un ArrayList puede ser dinámico. Como un Array es fijo, el tiempo para iterar sobre el array lleva menos tiempo que un array dinámico.
También hay algunas diferencias más entre ellos.
- Un array estático puede ser unidimensional o multidimensional, pero un ArrayList sólo puede ser unidimensional.
- Un Array es una estructura de datos primitiva disponible en Java. Pero un ArrayList es una parte de una API de estructura de colección en Java. Se construye sobre Arrays.
- Puede declarar Arrays con tipos de datos primitivos. Los tipos de datos primitivos no se pueden utilizar en un ArrayList. Si desea utilizar un tipo de datos primitivo, tendrá que utilizar la clase envoltorio correspondiente al tipo de datos.
Tipos de ArrayLists en Java
Los ArrayLists pueden ser de cualquier tipo. Pero tendrá que pasar la clase envolvente correspondiente porque no puede pasar tipos de datos primitivos en un ArrayList.
Puede añadir tipos de datos simples como enteros o cadenas pasando por clases envolventes como Integer
o String
.
También puede pasar tipos complejos como ArrayLists de ArrayLists, hashmaps, etc.
Veamos un ejemplo de utilización de una clase personalizada dentro de un ArrayList.
import java.util.ArrayList;
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public void getUser() {
System.out.println("Nombre: " nombre " Edad: " edad);
}
}
class Main {
public static void main(String[] args) {
ArrayList<User> users = new ArrayList<>();
users.add(new User("Subha", 25));
users.add(new User("Dan", 32));
users.forEach(user -> {
user.getUser();
});
}
}
Salida:
Nombre: Subha Edad: 25
Nombre: Dan Edad: 32
En el ejemplo de código anterior, se crea una ArrayList de tipo Usuario
. A continuación aprenderá más sobre los métodos utilizados en el ejemplo.
Creación de un ArrayList en Java
Ya ha comprendido los conceptos básicos de un ArrayList en Java. Ahora vamos a echar un vistazo a la sintaxis de un ArrayList, y a continuación, también veremos cómo se puede utilizar en código Java.
ArrayList<Tipo> listName = new ArrayList<>();
El fragmento anterior muestra la sintaxis de la definición de una ArrayList. El Tipo
define el tipo de la ArrayList. Por ejemplo, si desea declarar una ArrayList de tipos de datos enteros, puede pasar <Integer>.
Tenga en cuenta que no puede pasar int
, ya que es un tipo de datos primitivo.
También necesitará importar java.util.ArrayList
para utilizar ArrayList en sus programas. He aquí un ejemplo básico de un programa que declara un ArrayList:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
// Declarar una ArrayList
ArrayList<String> rainbow = new ArrayList<>();
System.out.println(rainbow);
}
}
Salida:
[]
En el código anterior, se declara una ArrayList llamada rainbow
de tipo String
.
Para trabajar con la ArrayList, existen múltiples métodos disponibles. Echemos un vistazo a algunos métodos.
El método add
La clase ArrayList proporciona varios métodos para realizar operaciones como añadir o eliminar elementos, obtener valores, establecer un valor en una posición específica, borrar un ArrayList, etc.
El primer método que veremos es el método add
.
El método add
se utiliza para añadir un único elemento a un ArrayList
. La sintaxis para add
se muestra a continuación.
arrayList.add(int i, Elemento)
Entendamos ahora la sintaxis. El primer parámetro i
es un parámetro opcional que representa la posición del índice donde se encuentra el elemento que desea añadir. El segundo parámetro Elemento
es el elemento que desea añadir. Veamos ahora un ejemplo.
rainbow.add("Violeta");
System.out.println(rainbow);
Salida:
[Violeta]
rainbow.add(0, "Rojo");
System.out.println(rainbow);
Salida:
[Rojo, Violeta]
El arco iris .add(
"Violeta") añade un elemento al final de una ArrayList. Y el arco iris .add(0,
"Rojo") añade el elemento Rojo
a la posición índice 0
de la ArrayList. El método add(
) devolver true
cuando un elemento se inserta con éxito.
El método get
El método get
se utiliza para obtener el valor de una posición especificada de un ArrayList.
arrayList.get(int i);
La i
que aparece en la sintaxis anterior es la posición del índice. Por ejemplo, si desea obtener el elemento de la posición de índice 1
, escriba arrayList .get(1)
.
rainbow.add("Violeta");
rainbow.add(0, "Rojo");
String color = rainbow.get(1);
System.out.println(color);
Salida:
Violeta
El código anterior devolverá Violeta
de la ArrayList rainbow
.
El método set
El método set
se utiliza para reemplazar el valor de un elemento. Por ejemplo, si desea reemplazar el valor de un elemento en la posición de índice 0
, escriba rainbow.set(0, "Violeta")
, suponiendo que tiene una ArrayList llamada rainbow
.
La sintaxis del método set
es la siguiente,
arrayList.set(int i, Elemento);
Dónde i
es la posición del índice, y Elemento
es el valor del nuevo elemento.
rainbow.add("Violeta");
System.out.println(rainbow);
Salida:
[Violeta]
rainbow.add(0, "Rojo");
System.out.println(rainbow);
Salida:
[Rojo, Violeta]
rainbow.set(1, "Violeta");
System.out.println(rainbow);
Salida:
[Rojo, Violeta]
En el ejemplo anterior, añadimos dos valores a una ArrayList llamada arco iris
. En primer lugar, se añade el elemento Violeta
y, a continuación, en la posición 0
de la ArrayList, añadimos el elemento Rojo
. En este punto, la ArrayList completa tiene este aspecto, [Rojo, Violeta]
.
Ahora, el elemento en la posición 1
del índice se sustituye por el valor Violeta
utilizando el método set
. Después de reemplazar el valor, la ArrayList tendrá este aspecto, [
Rojo, Violeta].
El método remove
El método remove de
la ArrayList se utiliza para eliminar un valor de la ArrayList. Puede pasar el valor o la posición del índice del valor que desea eliminar. La sintaxis del método remove
se muestra a continuación:
arrayList.remove(Valor objeto);
// o
arrayList.remove(int i);
Pongamos un ejemplo para comprender mejor el método. Suponga que tiene un arrayList llamado arco iris
con estos valores [Violeta, Rojo, Verde]
. Ahora, si desea eliminar Rojo
de la ArrayList, puede escribir rainbow.remove("Rojo");
. Si llama a este método en la ArrayList arco iris
eliminará de ella el elemento Rojo
.
// rainbow = [Violeta, Rojo, Verde]
rainbow.remove("Rojo");
System.out.println(rainbow);
Salida:
[Violeta, Verde]
También puede pasar la posición del índice para eliminar el elemento en la posición del índice.
//arco iris = [Rojo, Verde]
rainbow.remove(0); // Elimina el elemento en la posición índice 0
System.out.println(rainbow);
Salida:
[Verde]
El método clear
Como su nombre indica, el método clear
elimina todos los elementos de un ArrayList. La sintaxis es sencilla y no toma ningún parámetro.
arraylist.clear()
Veamos un ejemplo,
rainbow.clear();
System.out.println(rainbow);
Salida:
[]
El método clear
no devuelve ningún valor. En su lugar, borra el valor de la ArrayList dada.
El método size
El método size
devuelve el tamaño de la ArrayList dada. Este método tampoco toma ningún parámetro. La sintaxis se muestra a continuación.
arrayList.size();
Aquí arrayList
es el nombre del ArrayList. Vamos a entender el método de tamaño
con la ayuda de un ejemplo.
ArrayList<String> rainbow = new ArrayList<>();
rainbow.add("Violeta");
rainbow.add("Rojo");
rainbow.add("Verde");
System.out.println(rainbow.size());
Salida:
3
Este método devuelve el valor del tamaño de la ArrayList. En el ejemplo anterior, la ArrayList rainbow
consta de tres valores, por lo que el método size
devuelve 3.
Conclusión
En este artículo hemos visto qué es un ArrayList y en qué se diferencia de un Array. También vimos cómo se puede declarar y utilizar un ArrayList utilizando varios métodos disponibles para la clase ArrayList.
Si desea profundizar en el aprendizaje de Java, consulte estos cursos de Java en línea.