Манипулировать картой разными способами?
Я надеюсь найти элегантный способ сортировки карты сначала по значению, а затем по ключу.
Например:
B | 50
А | 50
C | 50
E | 10
D | 100
F | 99
У меня такой код:
// Making the map into a list first
List<Map.Entry<String, Integer>> sortingList = new LinkedList<>(processMap.entrySet());
// Create a comparator that would compare the values of the map
Comparator<Map.Entry<String, Integer>> c = Comparator.comparingInt(Map -> Map.getValue());
// Sort the list in descending order
sortingList.sort(c.reversed());
Мне не нужно, чтобы результат снова отображался, поэтому этого достаточно, однако мой результат:
D | 100
F | 99
B | 50
А | 50
C | 50
E | 10
Я хотел бы отсортировать не только по значению, но и по ключу, чтобы результат был таким:
D | 100
F | 99
А | 50
B | 50
C | 50
E | 10
Я исследовал некоторые возможные решения, но проблема в том, что мои значения должны быть в порядке убывания, но мой ключ должен быть в порядке возрастания...
Надеюсь, что кто-нибудь может мне помочь.
1 ответ
Попробуй это:
Comparator<Map.Entry<String, Integer>> c = Comparator.comparing(Map.Entry<String, Integer>::getValue)
.reversed()
.thenComparing(Map.Entry::getKey);