Formación informática

Java | Joomla | MySQL

Curso de Java - Tema 26.4: ArrayList

Colección de vinilos

¿Qué es y que propiedades tiene?

La clase ArrayList en Java permite almacenar datos en memoria de forma similar a los Arrays, con la particularidad de que el número de elementos que almacena es dinámico, es decir, que no es necesario declarar su tamaño al inicializarlos como pasa con los arrays. Nos permiten añadir, eliminar y modificar elementos (que pueden ser objetos o elementos atómicos) de forma trasparente para el programador.

La interfaz List define una sucesión de elementos ordenados que admite elementos duplicados. Es la que mejor rendimiento tiene sobre la mayoría de situaciones.

A parte de los métodos heredados de Collection, ArrayList añade métodos que permiten establecer las siguientes propiedades:

  • Es una colección de objetos. Esto implica que un ArrayList no puede ser una lista de enteros como tipo primitivo (int) pero sí de objetos Integer.
  • Sólo admite una columna o tipo de objeto. Podemos declarar un array con varias dimensiones para tomar los datos de él, por ejemplo.
  • La ordenación se hace mediante una numeración que va desde cero hasta el número de elementos menos 1, es decir, en una colección de 18 personas los índices van desde persona(0) hasta persona(17).
  • La capacidad inicial es de diez objetos. Sin embargo, la capacidad es modificable luego y se amplía automáticamente a medida que vamos añadiendo elementos.
  • Al eliminar un objeto de la colección, todos los elementos posteriores se renumeran disminuyendo su índice una posición automáticamente.
  • Se tiene acceso posicional a los elementos de la lista.
  • Se pueden buscar elementos concretos de la lista y devuelve su posición.
  • Iteración sobre elementos: mejora el Iterator por defecto.
  • Permite realizar ciertas operaciones sobre rangos de elementos dentro de la propia lista.
  • No es sincronizada, es decir, no se garantiza el estado del List si dos o más hilos acceden de forma concurrente al mismo. Esto se puede solucionar empleando una serie de métodos que actúan de wrapper para dotar a estas colecciones de esta falta de sincronización.
  • Sólo podemos añadir objetos del tipo declarado al parametrizar la clase. Este tipo de clases, que requieren un tipo como parámetro, se denominan “clases genéricas o parametrizadas”.

¿Cómo se usa?

Esta clase pertenece a la biblioteca java.util. Por tanto, para emplearla en nuestras clases lo primero que tenemos que hacer es importarla:

import java.util.ArrayList;

Para declarar un objeto de este tipo la sintaxis genérica es:

modificador_acceso ArrayList  NombreDelArrayList;

Para crear un objeto de esta clase la sintaxis genérica es:

NombreDeObjeto = new ArrayList >();

modificador_acceso ArrayList  NombreDelArrayList = new ArrayList >();

Para extraer todos los valores almacenados en cada posición usamos un bucle for each:

for (String variable_temporal: nombre_arrayList){
System.out.println(nombre_arrayList)
}

for (Objeto nombre_de_la_clase: nombre_arrayList){
System.out.println(nombre_arrayList)
}

Métodos

Una vez que tenemos declarado e inicializado el objeto, ya podemos usar sus métodos como siempre, escribiendo el nombre del objeto seguido de un punto y el nombre del método.

Para comprobar si contiene algún elemento tenemos que usar el método isEmpty que devuelve un resultado de tipo booleano. Esto se usa constantemente en aplicaciones para evitar devolver contenido vacío:

nombreDelArrayList.isEmpty();

Para reemplazar un objeto existente la sintaxis genérica es:

nombreDelArrayList.set (int índice, E elemento);

Para añadir un elemento en la posición final la sintaxis genérica es:

nombreDelArrayList.add (objeto_a_añadir);

Para eliminar un elemento de la lista la sintaxis genérica es:

nombreArrayList.remove("posición");

Para eliminar todos los elementos de la lista la sintaxis genérica es:

nombreArrayList.clear();

Para obtener el número de objetos que contiene la lista la sintaxis genérica es

nombreDelArrayList.size();

Para extraer un objeto de cierta posición la sintaxis genérica es:

nombreDelArrayList.get (posición);

Podemos usar un bucle for con una variable local x para controlar el flujo hasta que termine el contenido del mismo y mostrar el contenido siendo la sintaxis genérica:

for (int x = 0; x  nombre_del_array.size(); x++) {
            System.out.println(nombre_del_array.get(x).metodo_get_atributo));
        }

Ordenación de ArrayList con un tipo de dato

Para ordenar en orden creciente que contiene una única “columna necesitamos” usar el método sort de la clase Collections, así que hay que comprobar que esté importado. La sintaxis genérica es:

import java.util.Collections;

Collections.sort(nombre_arrayList)
	for (tipo_datos variable: nombre_arraylist{
		System.out.println(variable};
	}

Esta sintaxis es válida tanto para números (Integer) como para palabras (String).

Para ordenar en orden decreciente necesitamos usar un objeto de la clase Comparator y el método reverseOrder() de la clase Collections:

import java.util.Comparator;
import java.util.Collections;

Comparator  comparador = Collections.reverseOrder();
Collections.sort(nombre_arraylist, comparador);
System.out.println("Listado ordenado en orden descendente");
for (tipo_dato variable : nombre_array) {
System.out.println(variable);
        }

Ordenación de ArrayList que contiene objetos con un solo atributo

Para ordenar en orden creciente un objeto con una sola propiedad, tenemos que usar los métodos de la clase Collections y un bucle for each:

Collections.sort(nombre_arraylist);
System.out.println("Listado ordenado alfabéticamente");
for (tipo_dato variable : nombre_arraylist) {
System.out.println(variable);
      }

Para ordenar en orden decreciente un objeto con una sola propiedad, tenemos que usar los métodos de la clase

Collections.reverse(nombre_arraylist);
System.out.println("Listado ordenado en orden inverso al alfabeto");
for (tipo_dato variable: nombre_arraylist) {
System.out.println(variable);
}
Curso de Java – Tema 26.3: Arrays bidimensionales o matrices | Curso de Java - Tema 26.5: HashMap
Curso de Java - Índice Ejercicios Nivel Medio

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información