19.5.1 

ArrayList

 e 

Iterator

En la fi gura 19.3 se utiliza un objeto 

ArrayList

 para demostrar varias herramientas de la interfaz 

Collection

.

El programa coloca dos arreglos 

Color

 en objetos 

ArrayList

 y utiliza un objeto 

Iterator

 para eliminar los 

elementos en la segunda colección 

ArrayList

 de la primera colección 

ArrayList

.

En las líneas 10 a 13 se declaran e inicializan dos variables arreglo 

String

, las cuales se declaran como 

final

,

por lo que siempre hacen referencia a estos arreglos. Recuerde que es una buena práctica de programación declarar 
constantes con las palabras clave 

static

 y 

final

. En las líneas 18 y 19 se crean objetos 

ArrayList

 y se asignan sus 

referencias a las variables 

lista

 y 

eliminarLista

, respectivamente. Estas dos listas almacenan objetos 

String

.

Observe que 

ArrayList

 es una clase genérica a partir de Java SE 5, por lo que podemos especifi car un argumento 

de tipo (

String

 en este caso) para indicar el tipo de los elementos en cada lista. Tanto 

lista

 como 

eliminar-

Lista

 son colecciones de objetos 

String

. En las líneas 22 y 23 se llena 

lista

 con objetos 

String

 almacenados 

en el arreglo 

colores

, y en las líneas 26 y 27 se llena 

eliminarLista

 con objetos 

String

 almacenados en el 

arreglo 

eliminarColores

, usando el método 

add

 de 

List

. En las líneas 32 y 33 se imprime en pantalla cada ele-

mento de 

lista

. En la línea 32 se llama al método 

size

 de 

List

 para obtener el número de elementos del objeto 

ArrayList

. En la línea 33 se utiliza el método 

get

 de 

List

 para obtener valores de elementos individuales. En 

las líneas 32 y 33 se pudo haber usado la instrucción 

for

 mejorada. En la línea 36 se hace una llamada al método 

eliminarColores

 (líneas 46 a 57), y recibe a 

lista

 y 

eliminarLista

 como argumentos. El método 

elimi-

narColores

 elimina los objetos 

String

 especifi cados en 

eliminarLista

 de la colección 

lista

. En las líneas 41 

y 42 se imprimen en pantalla los elementos de 

lista

, una vez que 

eliminarColores

 elimina los objetos 

String

especifi cados en 

eliminarLista

 de la 

lista

.

El método 

eliminarColores

 declara dos parámetros de tipo 

Collection

 (línea 47), los cuales contienen 

cadenas que se van a pasar como argumentos a este método. El método accede a los elementos del primer obje-
to

Collection

 (

coleccion1

mediante un objeto 

Iterator

. En la línea 50 se llama al método 

iterator

 de 

Collection

, el cual obtiene un objeto 

Iterator

 para el objeto 

Collection

. Observe que las interfaces 

Collec-

tion

 e

Iterator

 son tipos genéricos. En la condición del ciclo de continuación (línea 53) se hace una llamada 

al método 

hasNext

 de 

Iterator

 para determinar si el objeto 

Collection

 contiene más elementos. El método 

hasNext

 devuelve 

true

 si otro elemento existe, y devuelve 

false

 en caso contrario.

La condición del 

if

 en la línea 55 llama al método 

next

 de 

Iterator

 para obtener una referencia al siguiente 

elemento, y después utiliza el método 

contains

 del segundo objeto 

Collection

 (

coleccion2

) para determinar 

si

coleccion2

 contiene el elemento devuelto por 

next

. De ser así, en la línea 56 se hace una llamada al método 

remove

 de 

Iterator

 para eliminar el elemento del objeto 

coleccion1

 de 

Collection

.

Error común de programación 19.2

Si se modifi ca una colección mediante uno de sus métodos, después de crear un iterador para esa colección, el iterador 
se vuelve inválido de manera inmediata; cualquier operación realizada con el iterador después de este punto lanza 
excepciones 

ConcurrentModificationException

. Por esta razón, se dice que los iteradores son de “falla rápida”.

 1 

// Fig. 19.3: PruebaCollection.java

2

// Uso de la interfaz Collection.

3

import

 java.util.List;

 4 

import

 java.util.ArrayList;

 5 

import

 java.util.Collection;

 6 

import

 java.util.Iterator;

 7 
 8 

public class

 PruebaCollection 

 9 

{

 10  

private static final

 String[] colores = 

 11  

 

{

"MAGENTA"

,

"ROJO"

,

"BLANCO"

,

"AZUL"

,

"CYAN"

 };

 12  

private static final

 String[] eliminarColores = 

 13  

 

{

"ROJO"

,

"BLANCO"

,

"AZUL"

 };

 14 
 15  

// crea objeto ArrayList, le agrega los colores y lo manipula

16

public

 PruebaCollection()

Figura 19.3

  |  Demostración de la interfaz 

Collection

 mediante un objeto 

ArrayList

. (Parte 1 de 2).

19.5 Listas 

799

19_MAQ_CAP_19_DEITEL.indd799

4/19/081:31:20AM