为了账号安全,请及时绑定邮箱和手机立即绑定

如何找到哈希图中的最低值?

如何找到哈希图中的最低值?

猛跑小猪 2023-06-28 15:38:44
我无法找到哈希图中的最低值。只有一个哈希图,必须在其中找到玩家的最低值。                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();                        }                    }                }输出应将玩家中的最低值分配给attackerFound 变量。
查看完整描述

4 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

只需使用stream()withmin()即可获得最低值

lowestTrump.values().stream().min(Integer::compareTo);

如果lowestTrump可以为空,您也可以lowestTrump.values()用 apache包装CollectionUtils.emptyIfNull())或使用另一种空安全方法


查看完整回答
反对 回复 2023-06-28
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您可以像这样一步获得最小玩家:


Player lowestPlayer = lowestTrump.entrySet()

        .stream()

        .min(Comparator.comparingInt(Map.Entry::getValue))

        .map(Map.Entry::getKey)

        .orElse(null);


String attackerFound = lowestPlayer != null ? lowestPlayer.getName() : null;

请注意,如果lowestTrump为空,则将attackerFound为null。


查看完整回答
反对 回复 2023-06-28
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

这是我的实际工作代码


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

                }


查看完整回答
反对 回复 2023-06-28
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您可以使用树状图。这样,当您向该映射添加任何值时,它就已经被排序了。您可以获得第一个值,这将是最低或明智的 Versa。

Map <Player, Integer> playerMap = new TreeMap<Player, Integer>();

对于 Java 8+,您可以使用以下示例:

playerMap.values().stream().min(Integer::compareTo);

就是这样。


查看完整回答
反对 回复 2023-06-28
  • 4 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信