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

Java LinkedHashMap获取值最大的键时输出异常问题排查

问题原因与修复方案

问题原因

  • 你在main方法里直接打印的是静态变量maxKey,这个类级别的静态int变量默认初始值是0,和getHighestKey()方法里定义的局部变量maxKey是完全独立的两个变量,根本没触发计算逻辑。
  • 整个程序根本没执行核心逻辑:既没创建stuff类的实例,也没调用createHashmap()初始化LinkedHashMap,更没调用getHighestKey()去计算值最大的键。

修复方法

需要补全实例化和方法调用的步骤,同时清理无用的静态变量:

import java.util.LinkedHashMap;

public class Stuff { // 类名首字母大写符合Java命名规范
    LinkedHashMap<Integer, Integer> hashMap = new LinkedHashMap<>();

    public void createHashmap() {
        hashMap.put(0, 0);
        hashMap.put(2, 3);
    }

    public int getHighestKey() {
        Integer maxKey = null;
        for (Integer key : hashMap.keySet()) {
            if (maxKey == null || hashMap.get(key) > hashMap.get(maxKey)) {
                maxKey = key;
            }
        }
        return maxKey;
    }

    public static void main(String[] args) {
        Stuff instance = new Stuff();
        instance.createHashmap(); // 先初始化Map
        int result = instance.getHighestKey(); // 计算值最大的键
        System.out.println(result); // 打印结果,此时输出2
    }
}

额外说明

  • 把类名stuff改成Stuff是遵循Java的命名规范,让代码更规范易读。
  • 修改后程序会先初始化Map,再遍历所有键比较对应的值,最终返回值为3的键2,运行结果符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:52:38