java版本JDK1.8
Map是我们经常使用的,在面对复杂Map时,我们怎么更好的去维护呢?
这里的复杂Map就是<K,V>中V是一个Collection集合比如:
那么它是一个复杂Map,如果一个<K,V>的V是Integer这种atomic value,那就不是复杂Map。
无论是开发还是在刷题中,我们经常做这种操作,
我们先拿到Key值对应的Collection,再往Collection中加入元素。但是这会出现一个问题!!!
可能这个Collection根本不存在。
那么代码就变成这样了。
所以,为了不抛出异常,
你的代码需要能够处理key不在map里的情况。
你可能会这样处理。
也就是当key不在map中时,提前new 一个 Collection放进去。
虽然这样不会抛出异常类,但是代码却变复杂了,怎么简化这段代码呢??
我们的 map.computeIfAbsent();方法就派上用场了。
computeIfAbsent()意思时当key不在Map中时,做操作。
使用一行代码,代替三行代码。
computeIfAbsent方法是顶级接口Map中的方法。所以只要是实现l了Map接口的实现类时,都可以使用这个方法。
computeIfAbsent简单介绍
computeIfAbsent() 方法对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 Map 中。
computeIfAbsent() 方法的语法为:
hashmap.computeIfAbsent(K key, Function remappingFunction)
注:hashmap 是 HashMap 类的一个对象。
参数说明:
key - 键
remappingFunction - 重新映射函数,用于重新计算值
返回值
如果 key 对应的 value 不存在,则使用获取 remappingFunction 重新计算后的值,并保存为该 key 的 value,否则返回 value。
参照:
油管博主SchelleyYuki
jdk1.8 Map<K,V>.computeIfAbsent源码注解