Java: максимальное значение в TreeMap
Если у меня есть TreeMap:
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
Я хочу распечатать String
с самым высоким значением. Я видел другие вопросы о сортировке, но мне интересно, есть ли какой-нибудь плавный способ получить максимальное значение на карте?
3 ответа
Решение
Используя Java 8, однострочник для получения ключа с наибольшим значением:
String s = map.entrySet()
.stream()
.max(Map.Entry::comparingByValue)
.map(Map.Entry::getKey)
.orElse(null);
s
будет null
если map
пустой.
Нет, для этого вам нужно поменять ключ и значение. Это ключи, которые отсортированы.
TreeMap<String, Integer> map = new TreeMap<String, Integer>();
будет выглядеть так:
Map<Integer, Collection<String>> map = new TreeMap<>();
Предполагая, что вам нужны все строки с наивысшим значением, в противном случае вам нужна только такая строка, вы можете использовать эту конструкцию:
Map<Integer, String> map = new TreeMap<>();