0
votes

Comment trouver la valeur la plus basse dans un hashmap?

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();
                        }
                    }
                }


0 commentaires

4 Réponses :


2
votes

Utilisez simplement un flux () avec min () pour obtenir la valeur la plus basse xxx


si le LowestTrump peut être null Vous pouvez également envelopper LowestTrump.values ​​() avec Apache CollectionUtils.emptyifnull ()) ou utilisez une autre approche null-Safe


0 commentaires

0
votes

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);


0 commentaires

1
votes

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;


1 commentaires

Basé sur votre suggestion, j'ai fait un petit changement



0
votes

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");
                }


0 commentaires