最近在处理IP网段和统计IP访问次数时,遇到使用getOrDefault的一些理解问题,希望此笔记能让我长点记性,不要再次忘记
一、HashMap中的getOrDefault(key, defaultValue)方法有什么用?
HashMap类实现的Map接口的getOrDefault(Object key,V defaultValue)方法用于获取指定键映射的值。 如果没有使用提供的键映射任何值,则返回默认值。
default V getOrDefault(Object key, V defaultValue)
此方法接受两个参数:
key: 若此key在hashmap中存在对应的value值,那么,返回此KEY对应的value值
defaultValue: 若此key在hashmap中不存在对应的value值(其实是在hash表中查不到存在这个key值),那么,返回defaultValue值
返回值: 前面两句说的很明白,此方法首先查询是否存在Key对应的value,若存在,返回value,否则,返回默认值。
二,没有例子的讲解显然是不清晰的,这里举一对例子:
情形1,哈希表中存在key值对应的value,返回此value:
// 举例:哈希表中存在key值对应的value,返回此value
// getOrDefault(Object key, V defaultValue) method
import java.util.*;
public class GFG {
// Main method
public static void main(String[] args)
{
// 创建哈希表,并设置值
HashMap<String, Integer> map
= new HashMap<>();
map.put("a", 100);
map.put("b", 200); //set key:"b",value:200
map.put("c", 300);
map.put("d", 400);
//打印哈希表
System.out.println("HashMap: "
+ map.toString());
//若"b"对应的value值存在,返回该值
//在这里这个值存在,就是200,否则返回500
int k = map.getOrDefault("b", 500);
// 打印函数的返回值
System.out.println("Returned Value: " + k);
}
}
Output:
HashMap: {a=100, b=200, c=300, d=400}
Returned Value: 200
情形2,哈希表中不存在key值对应的value,返回defaultValue:
// 举例:哈希表中不存在key值对应的value,返回defaultValue
// getOrDefault(Object key, V defaultValue) method
import java.util.*;
public class GFG {
// Main method
public static void main(String[] args)
{
// 创建哈希表,设置值
HashMap<String, Integer> map
= new HashMap<>();
map.put("a", 100);
map.put("b", 200);
map.put("c", 300);
map.put("d", 400);
// 打印哈希表
System.out.println("HashMap: "
+ map.toString());
// 此时并不存在key "y",当然也查询不到这个key对应的值
// 那么将返回默认值500
int k = map.getOrDefault("y", 500);
// 打印返回值k
System.out.println("Returned Value: " + k);
}
}
Output:
HashMap: {a=100, b=200, c=300, d=400}
Returned Value: 500