Возможный дубликат:
Как сортировать карту < Key, Value > по значениям в Java?
Я использую интерфейс карты для чтения из файла, а затем сохраняю значения в качестве пары значений ключа. Формат файла выглядит следующим образом
A 34
B 25
c 50
Я прочитаю данные из этого файла и сохраню это как пару ключевых значений, а затем я покажу это пользователю. Мое требование - отображать результаты в этом формате
C 50
A 34
B 25
Таким образом, мне нужно отсортировать карту в порядке убывания значения. Так что я смогу отобразить их в качестве результата. Я прочитал об этом и найду ниже код
static <K,V extends Comparable<? super V>> SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
new Comparator<Map.Entry<K,V>>() {
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
int res = e1.getValue().compareTo(e2.getValue());
return res != 0 ? res : 1; // Special fix to preserve items with equal values
}
}
);
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}
Я надеюсь, что это отсортирует значения в порядке возрастания, я просто хочу знать, правильный ли этот подход или какой-то другой эффективный подход будет полезен для меня?