Jerarquía de Collection y Map
Java nos proporciona una serie de estructuras dinámicas que comparten un conjunto de métodos declarados en la interfaz Collection<E>. Todas ellas implantan dicha interfaz, pero de manera distinta.
Interfaz Collection
Collection es una interfaz raíz en la jerarquía de colecciones y tiene diversas interfaces hijas que especifican diferentes tipos de colecciones (listas, conjuntos, colas, etc.). Estas interfaces son implantadas por varias clases concretas que proporcionan las implementaciones reales de las colecciones. Algunas de estas implementaciones ya las vimos.
La jerarquía de la interfaz Collection es la siguiente:
- Interfaz
Collection(la interfaz raíz): La interfazCollectiondefine las operaciones básicas que las colecciones deben tener (por ejemplo,add(),remove(),clear(),size(), etc.). A partir deCollection, las clases de colección en Java se derivan en diferentes tipos de colecciones, como listas, conjuntos y colas:List: Una lista es una colección ordenada que puede contener elementos duplicados. Implementaciones típicas:ArrayList,LinkedList,Vector, etc.Set: Un conjunto es una colección que no permite elementos duplicados y no tiene orden garantizado. Implementaciones típicas:HashSet,LinkedHashSet,TreeSet, etc.Queue: Una cola es una colección que sigue el orden de tipo FIFO (primero en entrar, primero en salir). Implementaciones típicas:LinkedList,PriorityQueue,ArrayDeque, etc.Deque: Una cola que permite insertar y eliminar elementos desde ambos extremos. Implementaciones típicas:ArrayDeque,LinkedList.
Interfaz Map
El HashMap se encuentra fuera de la jerarquía directa de Collection, ya que implementa la interfaz Map, que es una estructura de datos diferente de Collection. La interfaz Map es una interfaz que define una colección de pares clave-valor, mientras que las interfaces derivadas de Collection giran alrededor de colecciones de elementos sin clave o valor asociado.
Aunque Map no extiende directamente la interfaz Collection, comparte una relación cercana con las colecciones. Lo que ocurre es que Map proporciona un conjunto de claves (keySet()), un conjunto de valores (values()), y una lista de pares de clave-valor (entrySet()), que son todos elementos de tipo Collection.
- Interfaz
Map: Define un conjunto de métodos para trabajar con pares de clave-valor. Las interfaces hijas deMapincluyenSortedMap,NavigableMapy otras.HashMap: Implementa la interfazMapy almacena los pares de clave-valor utilizando una tabla de dispersión (hash table). Permite el acceso rápido a los valores utilizando claves. No mantiene orden en las claves ni en los valores.