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

Java中如何获取HashMap中对应最高值的所有键?

嘿,这问题挺常见的,我来给你捋捋怎么搞定它!

获取HashMap中所有对应最高值的键

我们可以分两步来实现需求:先定位出map里的最大值,再筛选出所有值等于这个最大值的键。下面是具体的实现思路和代码示例:

步骤1:找到HashMap中的最大值

借助Collections.max()方法可以直接从map的值集合里拿到最大值,比手动遍历要简洁得多:

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.ArrayList;

public class MaxKeyFinder {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("name1", 3);
        map.put("name2", 14);
        map.put("name3", 4);
        map.put("name4", 14);
        map.put("name5", 2);
        map.put("name6", 6);
        
        // 先判断map是否为空,避免空指针异常
        if (map.isEmpty()) {
            System.out.println("Map为空,无对应键");
            return;
        }
        
        // 获取map中的最大值
        int maxValue = Collections.max(map.values());

步骤2:筛选出所有值等于最大值的键

这里有两种常用实现方式,你可以根据自己的习惯选择:

方式一:传统for循环遍历

适合习惯传统写法的场景,逻辑直观易懂:

// 传统遍历筛选
        List<String> maxKeys = new ArrayList<>();
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            // 推荐用equals比较Integer,避免自动装箱的坑
            if (entry.getValue().equals(maxValue)) {
                maxKeys.add(entry.getKey());
            }
        }
        System.out.println("最高值对应的键:" + maxKeys); // 输出 [name2, name4]

方式二:Java 8+ Stream API(推荐)

用Stream的链式调用,代码更简洁优雅,可读性也很强:

// Stream API筛选方式
        List<String> maxKeysStream = map.entrySet()
                .stream()
                .filter(entry -> entry.getValue().equals(maxValue))
                .map(Map.Entry::getKey)
                .collect(Collectors.toList());
        System.out.println("最高值对应的键(Stream方式):" + maxKeysStream); // 输出 [name2, name4]
    }
}

额外注意事项

  • 一定要先判断map是否为空,否则Collections.max()会抛出NoSuchElementException;
  • 当值是Integer包装类型时,优先用equals()比较,而不是==——虽然小整数自动装箱后==可能生效,但大整数会因对象地址不同导致判断错误,养成好习惯能避免踩坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:39:03