You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何迭代Java HashMap并获取对应整数值最大的键 附报错代码示例

错误原因
  • Collections.max() 仅支持接收Collection集合类型的入参,你遍历过程中传入的是单个HashMap.Entry键值对对象,类型不匹配触发编译报错
  • 你的现有逻辑是遍历每个键值对时都尝试取最大值,不符合「找出整个HashMap中值最大的对应键」的需求,缺少全局对比的过程
实现方法

有两种常用实现方式,按需选择即可:

1. 手动遍历对比(兼容性好,易理解)

先初始化最大分值和对应名称的变量,遍历所有键值对时逐次对比更新,遍历结束后输出结果即可:

int maxScore = Integer.MIN_VALUE;
String maxName = "";
for (HashMap.Entry<String, Integer> entry : players.entrySet()) {
    if (entry.getValue() > maxScore) {
        maxScore = entry.getValue();
        maxName = entry.getKey();
    }
}
System.out.println(maxName);

2. Stream API 简洁写法(Java 8+支持)

直接对entrySet调用max方法,指定按Entry的value值对比,直接拿到值最大的Entry后取键即可:

String maxName = players.entrySet().stream()
                .max(Comparator.comparingInt(Map.Entry::getValue))
                .get()
                .getKey();
System.out.println(maxName);
完整可运行代码
import java.util.*; 

public class Program {
    public static void main(String[] args) {
        HashMap <String, Integer> players = new HashMap<>();
        players.put("Mario", 27);
        players.put("Luigi", 43);
        players.put("Jack", 11);
    
        // 手动遍历实现
        int maxScore = Integer.MIN_VALUE;
        String maxName = "";
        for (HashMap.Entry<String, Integer> entry : players.entrySet()) {
            if (entry.getValue() > maxScore) {
                maxScore = entry.getValue();
                maxName = entry.getKey();
            }
        }
        System.out.println(maxName);
    }
}

运行后将直接输出你预期的Luigi结果。

内容的提问来源于stack exchange,提问作者mario mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:15:01