Map es una de las estructuras de datos más importantes en Java. En este post, voy a ilustrar cómo utilizar diferentes tipos de mapas, como HashMap, TreeMap, HashTable y LinkedHashMap.
1. Map Overview
Hay 4 implementaciones de uso común de Mapa en Java SE - HashMap, TreeMap, Hashtable y LinkedHashMap. Si utilizamos sólo una oración para describir cada implementación, sería la siguiente:
HashMap se implementa como una tabla hash, y no hay ordenar en claves o valores.
TreeMap se implementa basado en la estructura de árbol rojo-negro, y es ordenada por la clave.
LinkedHashMap conserva el orden de inserción
Hashtable está sincronizado, en contraste con HashMap. Tiene una sobrecarga para la sincronización.
Esta es la razón por la que HashMap debe utilizarse si el programa es seguro para subprocesos.
HashMap
Si la clave de un HashMap es un objeto autodefinido, entonces es necesario seguir el contrato equals () y hashCode ().
class Dog {
String color;
Dog(String c) {
color = c;
}
public String toString(){
return color + " dog";
}
}
public class TestHashMap {
public static void main(String[] args) {
HashMap<Dog, Integer> hashMap = new HashMap<Dog, Integer>();
Dog d1 = new Dog("red");
Dog d2 = new Dog("black");
Dog d3 = new Dog("white");
Dog d4 = new Dog("white");
hashMap.put(d1, 10);
hashMap.put(d2, 15);
hashMap.put(d3, 5);
hashMap.put(d4, 20);
//print size
System.out.println(hashMap.size());
//loop HashMap
for (Entry<Dog, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey().toString() + " - " + entry.getValue());
}
}
}
Output:
4 white dog - 5 black dog - 15 red dog - 10 white dog - 20