Qual é a maneira mais fácil de obter a chave associada ao valor máximo em um mapa?
Acredito que Collections.max (someMap) retornará a chave max, quando você desejar a chave que corresponder ao valor máximo.
Basicamente, você precisa iterar sobre o conjunto de entradas do mapa, lembrando o "máximo atualmente conhecido" e a chave associada a ele. (Ou apenas a entrada que contém os dois, é claro.)
Por exemplo:
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
com um comparador personalizado provavelmente seria mais simples.Para completar, aqui está uma java-8 maneira de fazê-lo
ou
ou
fonte
(entry1, entry2) -> entry1.getValue() - entry2.getValue()
é mais compacto para o comparador.countMap.entrySet().stream().max((entry1, entry2) -> Integer.compare(entry1.getValue(), entry2.getValue())).get().getKey();
Map.Entry.comparingByValue()
vez dissoEste código imprimirá todas as chaves com valor máximo
fonte
Um liner simples usando Java-8
fonte
String max_key = Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey();
Veja como fazê-lo diretamente (sem um loop extra explícito), definindo o apropriado
Comparator
:fonte
Uma resposta que retorna um Opcional, pois o mapa pode não ter valor máximo se estiver vazio:
map.entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
fonte
Java 8 maneira de obter todas as chaves com valor máximo.
Além disso, você pode paralelizar usando, em
parallelStream()
vez destream()
fonte
Eu tenho dois métodos, usando este método para obter a chave com o valor máximo:
Como exemplo, obtendo a entrada com o valor máximo usando o método:
Usando o Java 8 , podemos obter um objeto que contém o valor máximo:
fonte
1. Usando Stream
2. Usando Collections.max () com uma expressão Lambda
3. Usando Stream com referência de método
4. Usando Collections.max ()
5. Usando iteração simples
fonte
Simples de entender. No código Abaixo, maxKey é a chave que está mantendo o valor máximo.
fonte
Esta solução está ok?
fonte
Elemento Majoritário / elemento max no mapa:
fonte
determinado mapa
HashMap abc = novo HashMap <> ();
obtenha todas as entradas do mapa com um máximo de valores.
você pode usar qualquer um dos métodos abaixo no filtro para obter as respectivas entradas do mapa para conjuntos de valores mínimos ou máximos
se apenas quiser obter as chaves para o mapa de filtro
se você deseja obter os valores para o mapa filtrado
se você deseja obter todas essas chaves em uma lista:
se você deseja obter todos esses valores em uma lista:
fonte
Para o meu projeto, usei uma versão ligeiramente modificada da solução de Jon e Fathah. No caso de várias entradas com o mesmo valor, ele retorna a última entrada que encontra:
fonte
fonte
você pode fazer assim
fonte