Quel est le moyen le plus simple d'obtenir une clé associée à la valeur maximale dans une carte?
Je crois que Collections.max (someMap) renverra la clé maximale, lorsque vous voulez la clé qui correspond à la valeur maximale.
Fondamentalement, vous devez parcourir l'ensemble d'entrées de la carte, en vous rappelant à la fois le "maximum actuellement connu" et la clé qui lui est associée. (Ou juste l'entrée contenant les deux, bien sûr.)
Par exemple:
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
avec un comparateur personnalisé serait probablement plus simple.Pour être complet, voici un java-8 façon de le faire
ou
ou
la source
(entry1, entry2) -> entry1.getValue() - entry2.getValue()
est plus compact pour le comparateur.countMap.entrySet().stream().max((entry1, entry2) -> Integer.compare(entry1.getValue(), entry2.getValue())).get().getKey();
Map.Entry.comparingByValue()
placeCe code imprimera toutes les clés avec une valeur maximale
la source
Un simple one liner utilisant Java-8
la source
String max_key = Collections.max(map.entrySet(), Map.Entry.comparingByValue()).getKey();
Voici comment le faire directement (sans boucle supplémentaire explicite) en définissant le approprié
Comparator
:la source
Une réponse qui renvoie une option car la carte peut ne pas avoir de valeur maximale si elle est vide:
map.entrySet().stream().max(Map.Entry.comparingByValue()).map(Map.Entry::getKey);
la source
Java 8 moyen d'obtenir toutes les clés avec une valeur maximale.
Vous pouvez également le paralléliser en utilisant
parallelStream()
au lieu destream()
la source
J'ai deux méthodes, en utilisant cette méthode pour obtenir la clé avec la valeur maximale:
À titre d'exemple, obtenez l'entrée avec la valeur maximale en utilisant la méthode:
En utilisant Java 8, nous pouvons obtenir un objet contenant la valeur maximale:
la source
1. Utilisation de Stream
2. Utilisation de Collections.max () avec une expression Lambda
3. Utilisation de Stream avec référence de méthode
4. Utilisation de Collections.max ()
5. Utilisation de l'itération simple
la source
Simple à comprendre. Dans le code ci-dessous, maxKey est la clé qui contient la valeur maximale.
la source
Cette solution est-elle correcte?
la source
Élément majoritaire / élément max dans la carte:
la source
carte donnée
HashMap abc = nouveau HashMap <> ();
obtenir toutes les entrées de carte avec un maximum de valeurs.
vous pouvez utiliser l'une des méthodes ci-dessous dans le filtre pour obtenir des entrées de carte respectives pour des ensembles de valeurs minimales ou maximales
si seulement vous voulez obtenir les clés de la carte de filtre
si vous souhaitez obtenir les valeurs de la carte filtrée
si vous voulez obtenir toutes ces clés dans une liste:
si vous souhaitez obtenir toutes ces valeurs dans une liste:
la source
Pour mon projet, j'ai utilisé une version légèrement modifiée de la solution de Jon et Fathah. Dans le cas d'entrées multiples avec la même valeur, il renvoie la dernière entrée qu'il trouve:
la source
la source
tu peux faire comme ça
la source