16 abril 2009

Ordenar un HashMap (HasMap)

Despues de un Post de un lector os dejo como ordenar un HashMap por Key y por Values:
//Ordenar un Map por Key

Map miMap= new HashMap();

miMap.put("2", "valor2");
miMap.put("1", "valor1");
miMap.put("4", "valor4");
miMap.put("3", "valor3");

Map mapOrdenado = new TreeMap(miMap);
Set ref = mapOrdenado.keySet();
Iterator it = ref.iterator();
while (it.hasNext()) {
System.out.println((String)it.next());
}

//Ordenar Map por Valor

HashMap mapResultado = new LinkedHashMap();
List misMapKeys = new ArrayList(miMap.keySet());
List misMapValues = new ArrayList(miMap.values());
TreeSet conjuntoOrdenado = new TreeSet(misMapValues);
Object[] arrayOrdenado = conjuntoOrdenado.toArray();
int size = arrayOrdenado.length;
for (int i=0; i<size; i++) {
mapResultado.put
(misMapKeys.get(
misMapValues.indexOf(
arrayOrdenado[i])
),arrayOrdenado[i]);
}

Iterator it1 = mapResultado.values().iterator();
while (it1.hasNext()) {
System.out.println((String)it1.next());
}
Espero que os sirva.