Maps y SortedMaps

Un Map es una estructura de datos agrupados en parejas clave/valor. Pueden ser considerados como una tabla de dos columnas. La clave debe ser única y se utiliza para acceder al valor.

Aunque la interface Map no deriva de Collection, es posible ver los Maps como colecciones de claves, de valores o de parejas clave/valor. A continuación se muestran los métodos de la interface Map (comando > javap java.util.Map):

Compiled from Map.java
public interface java.util.Map
{
public abstract void clear();
public abstract boolean containsKey(java.lang.Object); public abstract boolean containsValue(java.lang.Object); public abstract java.util.Set entrySet();
public abstract boolean equals(java.lang.Object); public abstract java.lang.Object get(java.lang.Object); public abstract int hashCode();
public abstract boolean isEmpty(); public abstract java.util.Set keySet();
public abstract java.lang.Object put(java.lang.Object, java.lang.Object); public abstract void putAll(java.util.Map);
public abstract java.lang.Object remove(java.lang.Object); public abstract int size();
public abstract java.util.Collection values(); public static interface java.util.Map.Entry
{
public abstract boolean equals(java.lang.Object); public abstract java.lang.Object getKey();
public abstract java.lang.Object getValue(); public abstract int hashCode();
public abstract java.lang.Object setValue(java.lang.Object);
}

Muchos de estos métodos tienen un significado evidente, pero otros no tanto. El método entrySet() devuelve una “vista” del Map como Set. Los elementos de este Set son referencias de la interface Map.Entry, que es una interface interna de Map. Esta “vista” del Map como Set permite modificar y eliminar elementos del Map, pero no añadir nuevos elementos.

El método get(key) permite obtener el valor a partir de la clave. El método keySet() devuelve una “vista” de las claves como Set. El método values() devuelve una “vista” de los valores del Map como Collection (porque puede haber elementos repetidos). El método put() permite añadir una pareja clave/valor, mientras que putAll() vuelca todos los elementos de un Map en otro Map (los pares con clave nueva se añaden; en los pares con clave ya existente los valores nuevos sustituyen a los antiguos). El método remove() elimina una pareja clave/valor a partir de la clave.

La interface SortedMap añade los siguientes métodos, similares a los de SortedSet:

La clase HashMap implementa la interface Map y está basada en una hash table, mientras que TreeMap implementa SortedMap y está basada en un árbol binario.

Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra