Puede seguir utilizando Collections.min
con una costumbre Comparator
para obtener el Map.Entry
con el valor más bajo:
Map<String, Double> map = new HashMap<String, Double>();
map.put("1.1", 1.1);
map.put("0.1", 0.1);
map.put("2.1", 2.1);
Entry<String, Double> min = Collections.min(map.entrySet(), new Comparator<Entry<String, Double>>() {
public int compare(Entry<String, Double> entry1, Entry<String, Double> entry2) {
return entry1.getValue().compareTo(entry2.getValue());
}
});
System.out.printf("%s: %f", min.getKey(), min.getValue()); // 0.1: 0.100000
Con Java 8:
Entry<String, Double> min = Collections.min(map.entrySet(),
Comparator.comparing(Entry::getValue));
Gracias por la respuesta - Olvidé mencionar que necesito la clave del valor mínimo – user326667
Muchas gracias, por cierto, también tendría que obtener los rangos de un mapa ordenado. Me gustaría usar el índice como rango (1,2,3 ...) ¿Cuál podría ser la mejor manera de hacer esto con los mapas ya que aquí no es posible obtener el índice? Es bastante inconviniente crear una lista del mapa cada vez – user326667
Si desea un índice, realmente necesitará usar una 'Lista' en su lugar en combinación con un 'Comparador 'adecuado o quizás' Comparable '. El 'SomeObject' a su vez puede mantener la clave y el valor del mapa original. Un 'Set ' también puede ser adecuado, usted solo contará el índice usted mismo. –
BalusC