Programación Java - Java ArrayList. Estructura dinámica de datos
Java ArrayList. Estructura dinámica de datos
Actualizado 2020
DECLARACIÓN Y CREACIÓN DE UN ARRAYLIST
ArrayList es una clase contenedora genérica que implementa arrays dinámicos de objetos de cualquier tipo.
De forma general un ArrayList en Java se crea de la siguiente forma:
ArrayList nombreArray = new ArrayList();
Esta instrucción crea el ArrayList nombreArray vacío.
Un arrayList declarado así puede contener objetos de cualquier tipo.
Por ejemplo:
Los elementos del arrayList a son:
“Lenguaje” 2 ‘a’ 23.5
“Lenguaje” 2 ‘a’ 23.5
Es decir, un ArrayList puede contener objetos de tipos distintos.
En este ejemplo, el primer objeto que se añade es el String “Lenguaje”. El resto no son objetos. Son datos de tipos básicos pero el compilador los convierte automáticamente en objetos de su clase envolvente (clase contenedora o wrapper) antes de añadirlos al array.
Un array al que se le pueden asignar elementos de distinto puede tener alguna complicación a la hora de trabajar con él. Por eso, una alternativa a esta declaración es indicar el tipo de objetos que contiene. En este caso, el array solo podrá contener objetos de ese tipo.
De forma general:
tipo debe ser una clase. Indica el tipo de objetos que contendrá el array.
No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase envolvente.
Por ejemplo:
Crea el array numeros de enteros.
MÉTODOS DE ARRAYLIST
Algunos métodos que proporciona ArrayList son:
MÉTODO | DESCRIPCIÓN |
size() | Devuelve el número de elementos (int) |
add(X) | Añade el objeto X al final. Devuelve true. |
add(posición, X) | Inserta el objeto X en la posición indicada. |
get(posicion) | Devuelve el elemento que está en la posición indicada. |
remove(posicion) | Elimina el elemento que se encuentra en la posición indicada. Devuelve el elemento eliminado. |
remove(X) | Elimina la primera ocurrencia del objeto X. Devuelve true si el elemento está en la lista. |
clear() | Elimina todos los elementos. |
set(posición, X) | Sustituye el elemento que se encuentra en la posición indicada por el objeto X. Devuelve el elemento sustituido. |
contains(X) | Comprueba si la colección contiene al objeto X. Devuelve true o false. |
indexOf(X) | Devuelve la posición del objeto X. Si no existe devuelve -1 |
Los puedes consultar todos en:
RECORRER UN ARRAYLIST
Podemos recorrerlo de forma clásica con un bucle for:
Con un bucle foreach:
Si suponemos el array de enteros llamado numeros:
Si el array contiene objetos de tipos distintos o desconocemos el tipo:
Utilizando un objeto Iterator.
La ventaja de utilizar un Iterador es que no necesitamos indicar el tipo de objetos que contiene el array.
Iterator tiene como métodos:
hasNext: devuelve true si hay más elementos en el array.
next: devuelve el siguiente objeto contenido en el array.
Ejemplo:
EJEMPLOS DE USO DE ARRAYLIST
Ejemplo 1:
Ejemplo 2: Escribe un programa que lea números enteros y los guarde en un ArrayList hasta que se lea un 0 y muestra los números leídos, su suma y su media.
COPIAR UN ARRAYLIST
El nombre de un ArrayList contiene la referencia al ArrayList, es decir, la dirección de memoria donde se encuentra el ArrayList, igual que sucede con los arrays estáticos.
Si disponemos de un ArrayList de enteros llamado ventas:
La instrucción:
No copia el array ventas en el nuevo array ventas1 sino que crea un alias:
De esta forma tenemos dos formas de acceder al mismo ArrayList: mediante la referencia ventas y mediante la referencia ventas1.
Para hacer una copia podemos hacerlo de forma manual elemento a elemento o se puede pasar la referencia del ArrayList original al constructor del nuevo:
ARRAYLIST COMO PARÁMETRO DE UN MÉTODO
Un ArrayList puede ser usado como parámetro de un método. Además un método puede devolver un ArrayList mediante la sentencia return.
Ejemplo: Método que recibe un ArrayList de String y lo modifica invirtiendo su contenido:
ARRAYS BIDIMENSIONALES UTILIZANDO ARRAYLIST
Un ArrayList es un array unidimensional, pero con ellos podemos simular arrays de dos o más dimensiones anidando ArrayLists.
Para crear una matriz lo que creamos es un ArrayList cuyos elementos son a su vez ArrayList. Esto se puede extender sucesivamente y obtener arrays de más dimensiones.
Ejemplo:
Programa que lee las notas de 10 alumnos y las guarda en un ArrayList Bidimensional. Cada alumno tiene un número indeterminado de notas. La lectura de notas de cada alumno acaba cuando se introduce un número negativo. Finalmente se muestran todas las notas de todos los alumnos.
Comentarios
Publicar un comentario