Map<String,String> map = new HashMap<String,String>();
mapa.put("b","4");
mapa.put("a","5");
mapa.put("d","5");
mapa.put("c","3");
//Por el método map.keySet()
//Método 1: obteniendo el valor de la clave y luego obteniendo el valor;
/*para(Clave de cadena: map.keySet()){
Valor de cadena = map.get(clave);
System.out.println(clave+" "+valor);
}*/
//Usar el iterador para obtener la clave;
/*Iterator<String> iter = map.keySet().iterator();
while(iter.hasNext()){
Cadena clave=iter.siguiente();
Valor de cadena = map.get(clave);
System.out.println(clave+" "+valor);
}*/
//Por el método map.entrySet()
//Método 1: recorrer cada par clave-valor en el mapa y luego obtener la clave y el valor
/*for(Entrada<Cadena, Cadena> vo : map.entrySet()){
vo.getKey();
vo.obtenerValor();
System.out.println(vo.getKey()+" "+vo.getValue());
}*/
/*//Usar el iterador para obtener la clave
Iterator<Entry<String,String>> iter = map.entrySet().iterator();
while(iter.hasNext()){
Entry<String,String> entrada = iter.next();
Clave de cadena = entrada.getKey();
Valor de cadena = entrada.getValue();
System.out.println(clave+" "+valor);
}*/
// Convertir map<String, String> a ArryList, pero los elementos de la lista son Entry<String, String>
List<Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
Collections.sort(lista,nuevo Comparador<Entrada<Cadena,Cadena>>(){
@Anular
public int compare(Entrada<String, String> o1,
Entrada<Cadena, Cadena> o2) {
bandera int = o1.getValue().compareTo(o2.getValue());
si (bandera == 0) {
devuelve o1.getKey().compareTo(o2.getKey());
}
bandera de retorno;
}
});
//Recorrer la lista para obtener los elementos ordenados en el mapa
for(Entrada<Cadena, Cadena> en : lista){
System.out.println(en.getKey()+" "+en.getValue());
}
ejecutar salida
do 3
segundo 4
un 5
re 5
Nota: Cuando el valor es el mismo, compare el tamaño de la clave y ordene de menor a mayor.