1. ArrayListclase

Hoy exploraremos la ArrayListclase. Esta es la primera de varias clases conocidas como colecciones . En Java, las colecciones son un tema tan amplio y útil que se les dedica una búsqueda completa de CodeGym.

Para comprender completamente cómo se estructuran las colecciones y todos sus matices, primero debe aprender programación orientada a objetos, interfaces, herencia, los conceptos básicos de subprocesos múltiples y mucho más.

Así que hoy nos familiarizaremos con el tipo de colección más simple. Pero a un nivel lo suficientemente profundo como para que entiendas cómo usarlo y cómo funciona. Ahora bien, conoce la ArrayListcolección .

la historia de fondo

Comenzaré con un poco de historia. A los programadores realmente no les gustó un aspecto de las matrices: el hecho de que su tamaño no se puede cambiar. ¿Qué sucede si necesita almacenar tres elementos más en una matriz, pero solo hay una celda vacía?

La única solución a las limitaciones de espacio de una matriz era crear una matriz muy grande para acomodar todos los elementos que pudiera necesitar almacenar. Pero esto era por lo general una pérdida de memoria. Si una matriz generalmente contenía dos o tres elementos, pero había incluso una pequeña posibilidad de que necesitara almacenar 100 de ellos, entonces era necesario crear una matriz con capacidad para almacenar 100.

Entonces, ¿qué idearon los programadores? Escribieron la ArrayListclase, que hizo el mismo trabajo que la Arrayclase, pero fue redimensionable.

clase ArrayList

El nombre de la ArrayListclase se forma a partir de dos palabras: Array + List. Arrayes una matriz y Listes una lista.

Cada ArrayListobjeto contiene una matriz ordinaria de elementos. Cuando lee elementos de un ArrayList, el objeto los recupera de su matriz interna. Cuando escribe elementos, los escribe en la matriz interna.

La clase ArrayList carece de todas las desventajas que tienen los arreglos. Sabe cómo:

  • Almacenar elementos de un tipo específico
  • Redimensionar dinámicamente la lista
  • Agregar elementos al final de la lista
  • Insertar elementos al principio o en medio de la lista
  • Eliminar elementos de cualquier parte de la lista

Para obtener más detalles, consulte a continuación:


2. Crear un ArrayListobjeto

Para crear un ArrayListobjeto, debe escribir un código como este:

ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();

Donde ArrayListes el tipo/clase de colección, TypeParameteres el tipo de los elementos almacenados en la ArrayListcolección y namees el nombre de una ArrayList<TypeParameter>variable.

La namevariable tiene un tipo genérico. Consta de dos tipos: primero se indica el tipo de la colección, y luego se utilizan paréntesis angulares para indicar el tipo de los elementos almacenados en la colección.

Ejemplos:

Código Descripción
ArrayList<Integer> list = new ArrayList<Integer>();
lista de enteros
ArrayList<String> list = new ArrayList<String>();
Lista de cadenas
ArrayList<Double> list = new ArrayList<Double>();
lista de numeros reales

A diferencia de las matrices, las colecciones no pueden almacenar tipos primitivos, solo tipos de referencia . Entonces, si necesita una colección de ints, use la Integerclase contenedora en su lugar.


3. Operaciones con unArrayList

Inicialmente, la longitud de la lista recién creada es cero, ya que contiene 0 elementos. Si agrega un elemento a la lista, su longitud aumenta en 1. Si elimina el elemento agregado, la longitud vuelve a disminuir a cero.

La siguiente tabla puede enseñarle más sobre los métodos de la ArrayListclase:

Métodos Descripción
void add(Type value)
Agrega el elemento pasado a la lista.
void add(int index, Type value)
Agrega un elemento a una ubicación específica en la lista.
Type get(int index)
Devuelve el elemento cuyo índice esindex
void set(int index, Type value)
Se asigna valueal elemento cuyo índice esindex
Type remove(int index)
Elimina el elemento cuyo índice es index. Devuelve el elemento eliminado.
Type remove(Type value)
Elimina el elemento que pasa al método. Si hay más de un elemento de este tipo, se eliminará el primero.
void clear()
Borra la lista, es decir, elimina todos los elementos de la lista.
boolean contains(Type value)
Comprueba si la lista contiene value.
boolean isEmpty()
Comprueba si la lista está vacía o no. En otras palabras, si la longitud de la lista es cero.
int size()
Devuelve el tamaño de la lista, es decir, el número de elementos de la lista.
Type[] toArray(Type[] array)
Devuelve una matriz que contiene los elementos de la lista.
Debe pasar la matriz al método.

Estos métodos le permiten hacer casi cualquier cosa que desee con la lista: intercambiar elementos, agregar elementos y eliminar elementos. Puede borrar la lista con un solo comando o incluso convertir la lista en una matriz.



4. Comparación de ArrayListyArray

No creo que podamos evitar la comparación ArrayListy una matriz.

Solo hay 4 acciones que puede realizar con matrices:

  • Crear una matriz
  • Obtener un elemento por índice
  • Establecer un elemento por índice
  • Obtener la longitud de la matriz

Aquí están estas operaciones que se aplican a una matriz y un ArrayList:

Formación Lista de arreglo
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Bye";
list.set(0, "Bye");
int count = array.length;
int count = list.size();

Comparemos cómo ArrayListfunciona an versus cómo funciona una matriz. Por ejemplo, implementemos esta tarea: "leer 10 cadenas del teclado y mostrarlas en la pantalla en orden inverso"

Usando matriz Usando ArrayList
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// Display the contents of the array on the screen
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// Display the contents of the collection on the screen
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

La analogía es clara. Todo es de alguna manera más corto y más claro para las matrices. Pero ArrayListtampoco es difícil: para obtener un elemento, usamos el get()método; para cambiar un elemento, el set()método; para obtener la longitud de la lista, el size()método.

Entonces, ¿por qué los programadores usan la ArrayListclase?

El punto central, por supuesto, son todos los otros métodos que las matrices ordinarias no tienen:

  • Agregar un elemento a la lista
  • Agregar un elemento al medio de la lista
  • Buscar un elemento en la lista
  • Eliminar un elemento de una lista