Какой самый простой способ получить ключ, связанный с максимальным значением на карте?
Я считаю, что Collections.max (someMap) вернет ключ Max, когда вы хотите ключ, который соответствует значению max.
По сути, вам нужно будет перебрать набор записей карты, помня как «известный в настоящее время максимум», так и ключ, связанный с ним. (Или просто запись, содержащая оба, конечно.)
Например:
Map.Entry<Foo, Bar> maxEntry = null;
for (Map.Entry<Foo, Bar> entry : map.entrySet())
{
if (maxEntry == null || entry.getValue().compareTo(maxEntry.getValue()) > 0)
{
maxEntry = entry;
}
}
max
с пользовательским компаратором, вероятно, будет проще.Для полноты вот Java-8 способ сделать это
или
или
источник
(entry1, entry2) -> entry1.getValue() - entry2.getValue()
более компактен для компаратора.countMap.entrySet().stream().max((entry1, entry2) -> Integer.compare(entry1.getValue(), entry2.getValue())).get().getKey();
Map.Entry.comparingByValue()
вместоЭтот код напечатает все ключи с максимальным значением
источник
Простой однострочник с использованием Java-8
источник
String max_key = Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey();
Вот как это сделать напрямую (без явного дополнительного цикла), определив соответствующий
Comparator
:источник
Ответ, который возвращает Необязательный, поскольку карта может не иметь максимального значения, если она пуста:
map.entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
источник
Java 8 способ получить все ключи с максимальным значением.
Также вы можете распараллелить его, используя
parallelStream()
вместоstream()
источник
У меня есть два метода, используя этот метод, чтобы получить ключ с максимальным значением:
В качестве примера получим Entry с максимальным значением, используя метод:
Используя Java 8, мы можем получить объект, содержащий максимальное значение:
источник
1. Использование Stream
2. Использование Collections.max () с лямбда-выражением
3. Использование потока со ссылкой на метод
4. Использование Collections.max ()
5. Использование простой итерации
источник
Просто для понимания. В приведенном ниже коде maxKey является ключом, который содержит максимальное значение.
источник
Это решение хорошо?
источник
Элемент Majority / max элемент на карте:
источник
данная карта
HashMap abc = new HashMap <> ();
получить все записи на карте с максимальным значением.
Вы можете использовать любой из следующих методов в фильтре, чтобы получить соответствующие записи карты для наборов минимальных или максимальных значений
если только хотите получить ключи для карты фильтра
если вы хотите получить значения для отфильтрованной карты
если вы хотите получить все такие ключи в списке:
если вы хотите получить все такие значения в списке:
источник
Для своего проекта я использовал слегка модифицированную версию решения Джона и Фатха. В случае нескольких записей с одинаковым значением, он возвращает последнюю найденную запись:
источник
источник
Вы можете сделать это
источник