Map中不常见,但值得学习的两个方法
computeIfAbsent()方法:
computeIfAbsent()方法是Map接口中的一个方法,用于根据指定的键在Map中获取对应的值。如果该键在Map中不存在,就会根据指定的mappingFunction计算一个值,并将其放入Map中。最后返回该键对应的值。
该方法的定义为:
V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
参数说明:
- key:要获取值的键
- mappingFunction:计算值的函数
使用示例:
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
Integer value = map.computeIfAbsent("three", key -> key.length());
System.out.println(value); // 输出:5
解释:
在上面的示例中,Map中没有键为"three"的元素。所以,根据指定的mappingFunction,计算出的值为键的长度,即5。然后,将键"three"和对应的值5放入Map中,并返回值5。
getOrDefault()方法:
getOrDefault()方法是Map接口中的一个方法,用于根据指定的键在Map中获取对应的值。如果该键在Map中存在,则返回该键对应的值;如果该键在Map中不存在,则返回指定的默认值。
该方法的定义为:
V getOrDefault(Object key, V defaultValue)
参数说明:
- key:要获取值的键
- defaultValue:键不存在时的默认值
使用示例:
Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);
Integer value = map.getOrDefault("three", 0);
System.out.println(value); // 输出:0
解释:
在上面的示例中,Map中没有键为"three"的元素。所以,根据getOrDefault()方法的定义,返回指定的默认值0。