Я использую интерфейс карты для чтения из файла, а затем сохраняю значения в нем как пару "ключ-значение".
Map<String, Integer> map = new HashMap<>();
Значение
A 25
D 10
B 15
E 15
C 17
Я хочу сначала отсортировать по значению в порядке убывания Сортировка карты<Key,Value> в порядке убывания на основе значения. Это поможет добиться порядка в порядке убывания. Но если значение дублируется, я хочу отсортировать по ключу в порядке возрастания.
Ожидаемый результат
A 25
C 17
B 15
E 15
D 10
Кто-нибудь знает, как этого добиться.
можете ли вы объяснить мне .
sorted(Comparator.<Map.Entry<String, Integer>>comparingInt(Map.Entry::getValue) .reversed().thenComparing(Map.Entry::getKey))
эта частьтакже эта часть
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a,b)->b, LinkedHashMap::new))
@vivekmodi
Comparator.comparingInt
используется здесь для сортировки по значению каждой записи, и мы вызываемreversed
для получения убывающего порядка (по возрастанию по умолчанию).thenComparing
используется для сортировки ключей в порядке возрастания, если значения совпадают.Collectors.toMap
здесь просто преобразует поток записей вLinkedHashMap
. См. документацию для более подробной информации.