Вам необходимо составить список ключей, отсортировать их по соответствующим значениям, а затем выполнить итерацию по отсортированным ключам.
Map<String, String> map = getMyMap();
List<String> keys = new ArrayList<String>(map.keySet());
Collections.sort(keys, someComparator);
for (String key: keys) {
System.out.println(key + ": " + map.get(key));
}
Что касается того, что использовать для someComparator
, здесьВот некоторые полезные, общие процедуры создания компаратора, которые я часто нахожу полезными.Первый сортирует по значениям в соответствии с их естественным порядком, а второй позволяет вам указать любой произвольный компаратор для сортировки значений:
public static <K, V extends Comparable<? super V>>
Comparator<K> mapValueComparator(final Map<K, V> map) {
return new Comparator<K>() {
public int compare(K key1, K key2) {
return map.get(key1).compareTo(map.get(key2));
}
};
}
public static <K, V>
Comparator<K> mapValueComparator(final Map<K, V> map,
final Comparator<V> comparator) {
return new Comparator<K>() {
public int compare(K key1, K key2) {
return comparator.compare(map.get(key1), map.get(key2));
}
};
}