Java Collections Framework
Java Collections Framework
El Java Collections Framework es un conjunto de clases e interfaces que implementa estructuras de datos de uso habitual para colecciones de objetos: listas, conjuntos, mapas,…
- Aunque su nombre oficial incluye el término “framework”, su funcionamiento es el de una librería. Basicamente, pone a nuestra disposición su conjunto de interfaces y las clases que los implementan para reutilizarlas libremente en nuestras aplicaciones.
- Tanto colecciones como arrays nos permiten almacenar un conjunto de referencias a objetos y manejarlas como un único grupo. La principal diferencia radica en que, a diferencia de los arrays, las colecciones son dinámicas. No necesitan que especifiquemos cuál va a ser su capacidad en el momento de la instanciación y pueden “crecer” y “encoger” de forma automática a medida que añadimos o eliminamos objetos de la misma.
- Las colecciones de Java sólo pueden almacenar tipos referenciados, por tanto, no podemos crear colecciones de tipos primitivos (int, double,…). Para almacenar valores de estos tipos, deberemos hacerlos a través de sus clases wrapper (envoltorio): Integer, Long, Double,…
Resumen del diagrama: List: ordenada y con duplicados Set: no duplicados, no acceder por posición. Map: asociación claves y valores Queue: FIFO y otras formas.
Descripción de la intefaz
El interfaz java.util.Collection define la funcionalidad central que esperamos de cualquier colección que no sea un mapa. Sus métodos (ver figura de la página siguiente) se agrupan en cuatro grupos principales:
- Añadir elementos.
- Eliminar elementos.
- Consultar el contenido de la colección.
- Hacer accesible el contenido de la colección para procesamiento fuera de la colección.
Al ser Collection un subinterfaz de Java.lang.Iterable, cualquier colección que lo implemente podrá ser recorrida mediante bucles for-each.
Métodos para agregar objetos
- boolean add(E e): Añade el nuevo objeto e a la colección
- boolean addAll(Collection<? extends E> c): Añade todos los elementos de la colección c
Ambos métodos devuelven booleano, nos indicará si se agregado un elemento con éxito o si ha modificado la colección (hay colecciones que no aceptan duplicidad de objetos y pueden rechazar la inserción de objetos).
Métodos para eliminar objetos
- void clear(): Elimina todos los elementos de la colección
- boolean remove(Object o): Elimina el objeto o de la colección
- boolean removeAll(Collection c): Elimina todos los elementos que se encuentren también en c.
- boolean retainAll(Collection c): Mantiene sólo los elementos que se encuentren también c.
El argumento boolean devuelto por este método indica si la colección ha sido modificada en la ejecución.
Métodos para consultar a los objetos
- boolean contains(Object o): true si la colección contiene al objeto o; false en otro caso.
- boolean containsAll(Collection c): true si la colección contiene a todos los elementos de c.
- boolean isEmpty(): true si la colección está vacía.
- int size(): Devuelve el número de elementos de la colección.
Métodos para recorrer la colección
- Iterator iterator(): Devuelve un iterador sobre la colección, lo más frecuente.
- Object[] toArray(): Devuelve un array con todos los objetos de la colección, tipo Object
- T[] toArray(T[] a): Devuelve un array con todos los objetos del tipo del array a