¿Cuál es la forma más fácil de obtener la clave asociada con el valor máximo en un mapa?
Creo que Collections.max (someMap) devolverá la clave max, cuando desee la clave que corresponde al valor máximo.
Básicamente, necesitaría iterar sobre el conjunto de entradas del mapa, recordando tanto el "máximo actualmente conocido" como la clave asociada a él. (O solo la entrada que contiene ambos, por supuesto).
Por ejemplo:
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
con un comparador personalizado probablemente sería más simple.Para completar, aquí hay un java-8 forma de hacerlo
o
o
fuente
(entry1, entry2) -> entry1.getValue() - entry2.getValue()
Es más compacto para el comparador.countMap.entrySet().stream().max((entry1, entry2) -> Integer.compare(entry1.getValue(), entry2.getValue())).get().getKey();
Map.Entry.comparingByValue()
en su lugarEste código imprimirá todas las teclas con el valor máximo
fuente
Un trazador de líneas simple usando Java-8
fuente
String max_key = Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey();
Aquí se explica cómo hacerlo directamente (sin un ciclo adicional explícito) definiendo lo apropiado
Comparator
:fuente
Una respuesta que devuelve un Opcional ya que el mapa puede no tener un valor máximo si está vacío:
map.entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
fuente
Java 8 forma de obtener todas las claves con valor máximo.
También puedes paralelizarlo usando en
parallelStream()
lugar destream()
fuente
Tengo dos métodos, usando este método para obtener la clave con el valor máximo:
Como ejemplo, obtenga la entrada con el valor máximo utilizando el método:
Usando Java 8 podemos obtener un objeto que contiene el valor máximo:
fuente
1. Usando Stream
2. Usando Collections.max () con una expresión Lambda
3. Uso de Stream con referencia de método
4. Usando Collections.max ()
5. Usando iteración simple
fuente
Simple de entender En el siguiente código, maxKey es la clave que contiene el valor máximo.
fuente
¿Esta solución está bien?
fuente
Elemento mayoritario / elemento máximo en el mapa:
fuente
mapa dado
HashMap abc = nuevo HashMap <> ();
obtener todas las entradas del mapa con un máximo de valores.
Puede usar cualquiera de los métodos a continuación en el filtro para obtener las entradas del mapa respectivas para conjuntos de valores mínimos o máximos
si solo quieres obtener las claves para el mapa de filtro
si desea obtener los valores para el mapa filtrado
si desea obtener todas esas claves en una lista:
si desea obtener todos esos valores en una lista:
fuente
Para mi proyecto, utilicé una versión ligeramente modificada de la solución de Jon y Fathah. En el caso de múltiples entradas con el mismo valor, devuelve la última entrada que encuentra:
fuente
fuente
puedes hacer así
fuente