Map.merge

作者: 愤怒的老照 | 来源:发表于2020-09-18 13:51 被阅读0次

1 背景

在java8之前没有merge,向map添加新元素比较复杂,需要判断是否为空:

val map = new HashMap<String, Integer>();
val prev = map.get("test");
 if (prev == null) {
    map.put("test", 1);
} else {
    map.put("test", prev + 1);
}

2 merge

使用merge之后的代码:

val map = new HashMap<String, Integer>();
map.merge("test", 1, Integer::sum);

3 整理

  • K key:插入的key
  • V value:插入的value,value为null时,删除key
  • BiFunction<? super V, ? super V, ? extends V> remappingFunction:
    (oldValue, newValue) -> mergeValue
default V merge(K key, V value,
            BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
        Objects.requireNonNull(remappingFunction);
        Objects.requireNonNull(value);
        V oldValue = get(key);
        V newValue = (oldValue == null) ? value :
                   remappingFunction.apply(oldValue, value);
        if(newValue == null) {
            remove(key);
        } else {
            put(key, newValue);
        }
        return newValue;
    }

相关文章

网友评论

      本文标题:Map.merge

      本文链接:https://www.haomeiwen.com/subject/jfhjyktx.html