J'ai une TreeMap
avec des entrées comme
["aftab" = 4, "Manoj" = 5, "Rahul" = 5]
Je veux obtenir la clé avec la valeur maximale, mais s'il y a deux valeurs maximales ou plus, je veux la clé qui vient en premier sur la carte, Manoj
dans ce cas. Dans Mon application, j'ai utilisé Collections.max (map.getKey ())
et il renvoie Rahul
.
3 Réponses :
Créez un comparateur qui trie les entrées par valeurs décroissantes puis comparées par clés lorsque deux valeurs sont égales
Manoj=5
Map<String, Integer> map = new TreeMap<>(); map.put("aftab", 4); map.put("Manoj", 5); map.put("Rahul", 5); Entry<String, Integer> result = map.entrySet().stream() .sorted(Entry.<String, Integer>comparingByValue().reversed().thenComparing(Entry.comparingByKey())) .findFirst().orElseGet(null); System.out.println(result);
, sortie
Entry.<String, Integer>comparingByValue().reversed() .thenComparing(Entry.comparingByKey())
cette réponse est également correcte, mais pour moi peu complexe. Et il ne devrait imprimer que "manoj".
Créez un Comparator
et transmettez-le à Collections.max()
.
Map<String, Integer> map = new TreeMap<>( Map.of("Aftab", 4, "Manoj", 5, "Rahul", 5)); Comparator<Entry<String,Integer>> comp = Entry.comparingByValue(); Entry<String,Integer> e = Collections.max(map.entrySet(),comp); System.out.println(e); // or System.out.println(e.getKey());
Utilisez Collections :: max
pour trouver l'entrée avec la valeur maximale de map.entrySet ()
en utilisant Comparator.comparingInt (Map.Entry :: getValue )
.
Oui @Arvind Kumar Avinash, votre réponse est tout à fait correcte.
Est-ce que cela répond à votre question? Recherche de la clé associée à la valeur maximale dans une carte Java a>
Oui, c'était une bonne réponse.