Я пытаюсь отсортировать карту в порядке возрастания на основе ключей.Учитывая Map
:
Map<Integer, String> map = new LinkedHashMap<Integer, String>();
map.put(5, "five");
map.put(1, "one");
map.put(3, "three");
map.put(0, "zero");
Я хотел бы заказать:
0, zero
1, one
3, three
5, five
Я написал следующий код для выполнения этого:
public <K, V extends Comparable<? super V>> Map<K, V> sortByKeyInAscendingOrder(Map<K, V> map)
{
List<Entry<K, V>> list = new ArrayList<>(map.entrySet());
list.sort(Entry.comparingByKey());
Map<K, V> result = new LinkedHashMap<>();
for (Entry<K, V> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
Однако,когда я звоню sort()
, я получаю следующую ошибку:
The method sort(Comparator<? super Map.Entry<K,V>>) in the type List<Map.Entry<K,V>> is not applicable for the arguments (Comparator<Map.Entry<Comparable<? super Comparable<? super K>>,Object>>)
Я написал похожий код (который работает нормально) для сортировки по значению (изменив Entry.comparingByKey()
на Entry.comparingByValue()
), но по какой-то причинепри попытке сортировки по ключу я получаю вышеуказанную ошибку.
Как я могу это исправить?
Спасибо