您的位置:

Java getOrDefault方法的详解

一、什么是getOrDefault方法

Java中的Map是一种最基本的数据结构之一,用于存储键值对。在Map中,getOrDefault()是一种获取指定键的值,如果没有键存在,则返回提供的默认值的方法。

Map map = new HashMap<>();
Integer value = map.getOrDefault("key", 0);

  

这个代码将尝试从Map中检索键为“key”的值并将其赋给变量“value”。

如果该键存在,则“value”将以相应的值被赋值。否则,0将作为默认值被赋给“value”。

二、使用示例

1、使用默认值

getOrDefault()方法可用于确保您的代码不会因为没有找到键而发生异常。

Map map = new HashMap<>();
Integer value = map.getOrDefault("key", 0);

  

假设我们有一个Map,它映射字母与其出现次数。我们希望获取某个字母的数量,但在Map中不存在该字母。这时候我们可以使用默认值来避免异常的出现:

Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Integer value = map.getOrDefault("d", 0);
System.out.println(value); //输出: 0

  

这个代码中的“value”变量将被赋值为0,因为Key“d”在Map中不存在。

2、使用指定值

您也可以使用指定值来取代默认值。

Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
Integer value = map.getOrDefault("b", 0);
System.out.println(value); //输出: 2

  

这里的“value”变量将被赋值为2,因为Map中包含键“b”。

3、默认值可以是方法调用

在默认值位置可以是一个方法调用。

public Integer getValue() {
    return 0;
}
Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
Integer value = map.getOrDefault("c", getValue());
System.out.println(value); //输出: 0

  

这里的“getValue()”方法返回值为0,因此当Map中不存在键“c”时,“value”变量将被赋值为0。

三、使用场景

1、Map的遍历

在遍历Map时,getOrDefault()方法可用于初始化Map中每个键的默认值。这是一种方法,可以确保在尝试访问数据之前,Map中包含所需的键。

Map map = new HashMap<>();
for (String key : keys) {
    map.put(key, map.getOrDefault(key, 0) + 1);
}

  

在上述代码中,“keys”是一个包含多个键的列表。对于每个键,我们检查它是否已经存在于Map中。如果它存在,我们将其值加1。否则,我们将该键添加到Map中,并初始化其值为1。

2、处理字典

在处理字典时,我们经常需要对Map中不存在的单词进行处理。getOrDefault()方法可用于为单词设置默认值。

Map dictionary = new HashMap<>();
//...
String word = "java";
Integer count = dictionary.getOrDefault(word, 0);
dictionary.put(word, count + 1);

  

在上述代码中,我们想要处理名为“java”的单词。如果该单词不存在于字典中,则在Map中将其初始化为0,并将计数加1。

四、总结

getOrDefault()方法是Java Map API的一部分。它可用于确保代码不会因为缺少键而引发异常。此方法可用于处理字典或Map的遍历。