在Java8版本中,map 接口新增了一个实现。如下:
// 这里因为注释篇幅较长没有复制,有条件的朋友建议阅读源码中的注释加深理解
default V computeIfAbsent(K key,
Function<? super K, ? extends V> mappingFunction) {
Objects.requireNonNull(mappingFunction);
V v;
if ((v = get(key)) == null) {
V newValue;
if ((newValue = mappingFunction.apply(key)) != null) {
put(key, newValue);
return newValue;
}
}
return v;
}
顾名思义,computeIfAbsent
:如果不存在则计算。开发在过程中我们应该遇到很多类似的代码格式,我们需要从一个 map 中获取一个数据。通过是否为空判断该值是否存在,如果不存在将一个值插入,并返回该值。代码如下: