导读:本期聚焦于小伙伴创作的《如何利用Java的Map.getOrDefault简化代码避免空检查的技巧》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何利用Java的Map.getOrDefault简化代码避免空检查的技巧》有用,将其分享出去将是对创作者最好的鼓励。

在Java集合框架中,Map是常用的存储键值对的数据结构,日常开发中经常需要从Map中获取指定键对应的值,若键不存在或对应的值为null,通常需要编写额外的空检查逻辑,避免后续处理出现空指针异常。Java 8为Map接口新增的getOrDefault方法,能够很好地解决这类问题,让代码更加简洁。

如何利用Java的Map.getOrDefault简化代码避免空检查的技巧

传统获取Map值的空检查写法

在没有使用getOrDefault方法之前,我们获取Map中指定键的值时,通常需要先判断键是否存在,或者判断获取到的值是否为null,示例代码如下:

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

public class MapTraditionalDemo {
    public static void main(String[] args) {
        Map<String, Integer> scoreMap = new HashMap<>();
        scoreMap.put("语文", 90);
        scoreMap.put("数学", 85);
        
        // 传统写法1:先判断键是否存在
        Integer chineseScore;
        if (scoreMap.containsKey("语文")) {
            chineseScore = scoreMap.get("语文");
        } else {
            chineseScore = 0;
        }
        System.out.println("语文成绩:" + chineseScore);
        
        // 传统写法2:判断获取到的值是否为null
        Integer englishScore = scoreMap.get("英语");
        if (englishScore == null) {
            englishScore = 0;
        }
        System.out.println("英语成绩:" + englishScore);
    }
}

上述两种传统写法都需要编写额外的条件判断逻辑,当获取值的场景较多时,会产生大量重复的空检查代码,降低代码的可读性。

getOrDefault方法的基本使用

Map的getOrDefault方法的定义如下:

default V getOrDefault(Object key, V defaultValue) {
    V v;
    return (((v = get(key)) != null) || containsKey(key)) ? v : defaultValue;
}

该方法接收两个参数,第一个是要查询的键,第二个是当键不存在或者对应的值为null时返回的默认值。使用该方法改写上面的示例,代码如下:

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

public class MapGetOrDefaultDemo {
    public static void main(String[] args) {
        Map<String, Integer> scoreMap = new HashMap<>();
        scoreMap.put("语文", 90);
        scoreMap.put("数学", 85);
        
        // 使用getOrDefault获取值,不存在则返回默认值0
        Integer chineseScore = scoreMap.getOrDefault("语文", 0);
        Integer englishScore = scoreMap.getOrDefault("英语", 0);
        
        System.out.println("语文成绩:" + chineseScore);
        System.out.println("英语成绩:" + englishScore);
    }
}

可以看到,原本需要多行条件判断的逻辑,现在只需要一行代码就能完成,代码简洁度大幅提升。

getOrDefault的适用场景

getOrDefault方法适合以下场景使用:

  • 需要为不存在的键设置统一的默认值,比如统计词频时,初始次数设为0
  • 获取配置项时,若配置不存在则使用默认配置值
  • 从缓存Map中获取数据,不存在时返回默认的空对象,避免后续空指针判断

以下是一个统计词频的示例,展示getOrDefault的实用场景:

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

public class WordCountDemo {
    public static void main(String[] args) {
        String text = "java python java c++ python java";
        String[] words = text.split(" ");
        Map<String, Integer> wordCountMap = new HashMap<>();
        
        for (String word : words) {
            // 若词不存在,默认次数为0,再加1;若存在则直接加1
            wordCountMap.put(word, wordCountMap.getOrDefault(word, 0) + 1);
        }
        
        System.out.println("词频统计结果:" + wordCountMap);
    }
}

注意事项

使用getOrDefault方法时需要注意以下几点:

  • 默认值类型需要和Map的值类型匹配,比如值类型是Integer,默认值也需要是Integer类型
  • 如果Map中存储的null值是合法的业务值,那么getOrDefault方法会把null当成不存在的情况返回默认值,这种场景下需要额外判断
  • getOrDefault是Java 8新增的默认方法,若项目使用的Java版本低于8,则无法使用该特性

通过合理使用Map的getOrDefault方法,可以有效减少重复的空检查代码,让业务逻辑更加聚焦,提升代码的整洁度和可维护性,是Java开发中非常实用的小技巧。

JavaMapgetOrDefault空检查修改时间:2026-06-26 08:36:14

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。