大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。
map.getOrDefault()方法
在Java编程中,Map是一种非常常用的数据结构。Map通常用于存储键值对,其中每个键映射到一个值。当我们尝试访问一个不存在的键时,Map会返回null值。这在某些情况下可能会导致错误,因此Java 8引入了一个新的方法getOrDefault(),该方法可用于解决这个问题。
getOrDefault()方法的语法如下:
该方法接受两个参数:要查找的键和默认值。如果键存在,则返回与该键关联的值,否则返回指定的默认值。
default V getOrDefault(Object key, V defaultValue) {V v;return (((v = get(key)) != null) || containsKey(key))? v: defaultValue;}
当使用Map集合时,如果我们尝试访问一个不存在的键,则会返回一个null值,这在某些情况下可能会导致错误。使用Map的getOrDefault()方法可以解决这个问题。
上代码:当我们需要获取某个对象的值进行一些操作,如果map的value值为空,就会抛出空指针异常,空指针异常在开发中有时候很恼火。
class Demo {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("1", 10);map.put("2",20);// 如果获取一个不存在的key会怎样?Integer str = map.get(3);// 空对象的引用方法会抛出 NullPointerExceptionstr.equals("str");}
}
结果如下:
使用getOrDefault()方法
class Demo {public static void main(String[] args) {// 创建一个Map对象Map<String, Integer> map = new HashMap<>();// 添加键值对到Map中map.put("高启强", 1);map.put("高启盛", 2);map.put("歪驴子", 3);// 获取键为"高启强"的值int count1 = map.getOrDefault("高启强", 0);System.out.println("Count1: " + count1);// 获取键为"老默"的值int count2 = map.getOrDefault("老默", 0);System.out.println("Count2: " + count2);}}
结果如下:
在上面的示例中,我们首先创建一个Map对象,并向该Map中添加三个键值对。然后,我们使用getOrDefault()方法检索键为"高启强"和"老默"的值。由于"高启强"存在于Map中,因此返回值为1,而"老默" 不存在于Map中,因此返回默认值0。
使用场景
getOrDefault()方法通常用于编写更健壮的代码,以避免空指针异常。例如,假设我们有一个存储单词计数的Map,我们可以使用getOrDefault()方法来计算单词出现的次数,如下所示:
class Demo {public static void main(String[] args) {// 创建一个Map对象Map<String, Integer> wordCount = new HashMap<>();// 定义一句话String sentence = "welcome to java and welcome to here";// 将句子拆分成单词String[] words = sentence.split(" ");// 统计每个单词出现的次数for (String word : words) {int count = wordCount.getOrDefault(word, 0);wordCount.put(word, count + 1);}// 输出每个单词出现的次数for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}}}
结果如下:
在上面的示例中,我们创建了一个空的HashMap来存储单词计数。然后,我们定义了一个包含单词的句子,并使用split()方法将句子拆分成单词数组。接下来,我们使用for循环遍历单词数组,并使用getOrDefault()方法获取每个单词的计数。如果Map中不存在该单词,则默认计数为0。最后,我们使用put()方法将更新的计数存储回Map中。最后,我们遍历Map,输出每个单词及其出现次数。
最后
Map.getOrDefault()方法是一种非常有用的方法,它可以让我们更方便地处理Map中不存在的键。它通常用于编写更健壮的代码,以避免空指针异常。在使用该方法时,请注意defaultValue参数的类型必须与Map中值的类型兼容,否则会导致编译时错误。