Java学习Map中getOrDefault方法

  • 一、getOrDefault()方法
  • 1、介绍
  • 2、使用场景



一、getOrDefault()方法

1、介绍

当使用Map集合时,如果我们尝试访问一个不存在的键,则会返回一个null值,这在某些情况下可能会导致错误。使用Map的getOrDefault()方法可以解决这个问题。

该方法接受两个参数:要查找的键和默认值。如果键存在,则返回与该键关联的值,否则返回指定的默认值。

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

2、使用场景

getOrDefault()方法通常用于编写更健壮的代码,以避免空指针异常。例如,假设我们有一个存储单词计数的Map,我们可以使用getOrDefault()方法来计算单词出现的次数,如下所示:

Map<Character, Integer> countCharFrequency(String input) {
        Map<Character, Integer> frequencyMap = new HashMap<>();
        for (char ch : input.toCharArray()) {
            /**
             * frequencyMap记录字符出现的次数
             * 遍历每个字符首先调用getOrDefault方法获取map对应的value值(如果不存在则默认0)加1
             */
            frequencyMap.put(ch, frequencyMap.getOrDefault(ch, 0) + 1);
        }
        return frequencyMap;
    }

    @Test
    void contextLoads(){
        String input = "hello world";
        Map<Character, Integer> charFrequency = countCharFrequency(input);
        for (Character ch : charFrequency.keySet()) {
            System.out.println(ch + ": " + charFrequency.get(ch));
        }

    }

打印结果

: 1
r: 1
d: 1
e: 1
w: 1
h: 1
l: 3
o: 2
  • 奋斗是生命的旋律,坚持是奋斗的力量。无论前方的路有多么崎岖,都请记得,风雨过后便是彩虹。坚强地走下去,即使只是小步伐,也会离成功更近一步。
  • 冥想明日,感恩今朝。在每一个清晨的曙光中,我们都是命运的舵手,掌握着自己的未来。珍惜当下,努力奋斗,每一份汗水都值得骄傲。
  • 生命并非一帆风顺,而是一场漫长的马拉松。关键不是速度,而是坚持。那些曾经被汗水浇灌的付出,必将开出属于你的芬芳。
  • 成功并非等待幸运的降临,而是积极追求的结果。赢者在比赛开始前就已做好准备,所以,请相信,你也能成为那个勇敢闯入终点的人。
  • 生命之花需要阳光和雨露的滋润,才能怒放绚烂的美丽。每一个努力,都是对美好生活的种子,坚持不懈,收获必将随之而来,相信自己,你定会创造奇迹。