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<>();
Другие вопросы по тегам