Для сортировки исходной мапы по значениям и преобразования её в список следует использовать Stream API:
public static List<Integer> byLikesDesc(Map<Integer, Integer> idLikeCountMap) {
return idLikeCountMap.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
Тест:
System.out.println(byLikesDesc(Map.of(1, 5, 2, 3, 3, 0, 4, 2)));
// -> [1, 2, 4, 3]
Аналогично, можно брать поток не для элементов мапы, а для её ключей, которые можно сортировать в соответствии со значениями для данных ключей:
public static List<Integer> keysByLikesDesc(Map<Integer, Integer> idLikeCountMap) {
return idLikeCountMap.keySet()
.stream()
.sorted(Comparator.comparingInt(idLikeCountMap::get).reversed())
.collect(Collectors.toList());
}