Je suis incapable de trouver la valeur la plus basse dans un hachema. Il n'existe qu'un haschmap et en elle, la valeur la plus basse des joueurs doit être trouvée.
for (Map.Entry<Player, Integer> entry1 : lowestTrump.entrySet()) { Player key1 = entry1.getKey(); int value1 = entry1.getValue(); for (Map.Entry<Player, Integer> entry2 : lowestTrump.entrySet()) { Player key2 = entry2.getKey(); int value2 = entry2.getValue(); if(value1 == -1 || value2 == -1){ break; }else if(value1 < value2 && (value1 != 1 || value2 != 1)) { attackerFound = key1.getName(); } } }
4 Réponses :
Utilisez simplement un flux si le () code> avec
min () code> pour obtenir la valeur la plus basse
LowestTrump code> peut être null Vous pouvez également envelopper
LowestTrump.values () code> avec Apache
CollectionUtils.emptyifnull ()) CODE> ou utilisez une autre approche null-Safe p> p>
Vous pouvez utiliser Treemap. Pour que lorsque vous ajoutez une valeur à cette carte, elle sera déjà triée. Vous pouvez obtenir une première valeur et ce sera la version la plus basse ou la plus sage.
playerMap.values().stream().min(Integer::compareTo);
Vous pouvez obtenir le joueur minimum dans une seule étape, comme celui-ci:
Player lowestPlayer = lowestTrump.entrySet() .stream() .min(Comparator.comparingInt(Map.Entry::getValue)) .map(Map.Entry::getKey) .orElse(null); String attackerFound = lowestPlayer != null ? lowestPlayer.getName() : null;
Basé sur votre suggestion, j'ai fait un petit changement
Voici mon code de travail actuel
Optional<Player> result = lowestTrump.entrySet() .stream() .filter(c -> c.getValue() != -1) .min(Comparator.comparingInt(Map.Entry::getValue)) .map(Map.Entry::getKey); if(result != null && result.get().getSuitInHand() != -1) { System.out.println("Player : " + result.get().getName() + " is the first attacker"); }