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
相关产品推荐
相关产品推荐

