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

Java如何找出Map中出现次数最多的键并输出

Java 从字符统计Map中获取出现次数最高的键的实现

方式1:遍历Entry实现(兼容所有Java版本)

直接遍历Map的所有键值对,记录最大值对应的键即可:

// 你已经统计好的字符次数Map
Map<Character, Integer> countMap = ...;

Character maxKey = null;
int maxCount = -1;
// 遍历所有键值对
for (Map.Entry<Character, Integer> entry : countMap.entrySet()) {
    // 遇到更大的计数值就更新记录
    if (entry.getValue() > maxCount) {
        maxCount = entry.getValue();
        maxKey = entry.getKey();
    }
}

// 输出结果,示例中得到c
System.out.println(maxKey);

方式2:Java 8+ Stream流式实现

如果使用Java 8及以上版本,可以用Stream的max方法快速获取最大值对应的Entry,再取键即可:

Character maxKey = countMap.entrySet()
        .stream()
        // 按值比较取最大的Entry
        .max(Map.Entry.comparingByValue())
        // 空Map可自定义返回逻辑,比如orElse(null)
        .orElseThrow()
        .getKey();

完整测试代码

对应你给出的示例的完整运行代码:

import java.util.HashMap;
import java.util.Map;

public class MaxCountCharDemo {
    public static void main(String[] args) {
        // 模拟你已经生成好的统计Map
        Map<Character, Integer> countMap = new HashMap<>();
        countMap.put('a', 3);
        countMap.put('b', 4);
        countMap.put('c', 11);
        countMap.put('d', 5);
        countMap.put('e', 4);

        Character maxKey = null;
        int maxCount = -1;
        for (Map.Entry<Character, Integer> entry : countMap.entrySet()) {
            if (entry.getValue() > maxCount) {
                maxCount = entry.getValue();
                maxKey = entry.getKey();
            }
        }
        System.out.println(maxKey); // 输出c
    }
}

注意事项

  • 如果Map为空,直接调用get()会抛出异常,建议根据业务场景使用orElse(默认值)或者orElseThrow(自定义异常)处理
  • 如果存在多个字符的出现次数同为最高值,以上写法会返回第一个遍历到的对应键,若需要返回所有最高值的键,可以额外定义集合存储所有值等于maxCount的键即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:05