5.3 Usando ArrayList - ajpaez/OCA GitHub Wiki
(OCA Objective 4.3)
Las estructuras de datos son parte de la mayoría de aplicación. La API de Java proporciona una varias clases que soportan estructuras de datos comunes como son List, Sets, Maps, y Queues. Estas clases pertenecen a la parte de la API de Collection.
Cuando usar ArrayLists
- Cuando necesitamos incrementar y decrementar el tamaño de nuestras listas.
- El orden de los elementos de nuestras listas es importante y puede cambiar. NOTAS:
- La clase ArrayList esta en el paquete java.util.
- Se debe especificar el tipo de objetos que va a contener.
- ArrayList implemente la interfaz List.
- Su primer elemento comienza en el indice 0.
- No declaramos el tamaño del ArrayList cuando lo construimos.
- Permite añadir elementos sobre la marcha
- La lista mantiene un orden.
- El tipo de los elementos contenidos en el ArrayList se establece entre los caracteres diamante de la declaración del array.
NOTA: Hablando técnicamente, un ArrayList solo puede contener referencias a objetos, no objetos o primitivos. Lo que ocurre al insertar un dato primitivo es que se hace un autoboxed automático a su objeto equivalente.
ArrayLists y duplicados
Un ArrayList puede tener duplicados.
#Métodos de ArrayLists mas importantes Los métodos siguientes son algunos de los mas usados comúnmente:
- add(element) Añade el elemento al final de la lista
- add(index, element) Añade el elemento en la posición index especificada y desplaza los restantes al final
- clear() Elimina todos los elementos
- boolean contains(element) Devuelve si el elemento esta o no en la lista
- Object get(index) Devuelve el objeto localizado en la posición index
- int indexOf(Object) Devuelve la posición (int) del objeto si está o -1 si no lo encuentra
- remove(index) Elimina el elemento situado en la posición index y desplaza los elementos posteriores hacia el principio un espacio
- remove(Object) Elimina la primera ocurrencia del objeto encontrada y desplaza los elementos posteriores un espacio hacia el principio
- int size() Devuelve el numero de elementos en el ArrayList
Encapsulación de variables de referencia
Cuando realizamos un return de una variable de referencia, o lo que es lo mismo un pass-by-copy, estamos devolviendo una copia de la variable deferencia y por tanto la dirección de memoria a la que apunta nuestra variable de referencia. Cuando encapsulamos un objeto mutable, como un StringBuilder, un array o un ArrayList, si quieres permitir que las clases externas tengan una copia del objeto, se debe de copiar realmente el objeto y devolver una variable de referencia hacia el objeto que se ha copiado. Sino todo lo que se está haciendo es devolver una copia de la variable de referencia del objeto original y NO tenemos encapsulación (ya que el objeto estará disponible desde fuera de su scope)