您的位置:首页 > 教育 > 培训 > 软件大全免费下载_电子商务营销渠道_网站推广怎么做有效果_宁波免费seo在线优化

软件大全免费下载_电子商务营销渠道_网站推广怎么做有效果_宁波免费seo在线优化

2025/7/15 4:32:00 来源:https://blog.csdn.net/weixin_63944437/article/details/142853550  浏览:    关键词:软件大全免费下载_电子商务营销渠道_网站推广怎么做有效果_宁波免费seo在线优化
软件大全免费下载_电子商务营销渠道_网站推广怎么做有效果_宁波免费seo在线优化

merge()

源码:

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;
}

merge() 适用于两种情况:

  • 如果 key 不存在,它就等价于 put(key, value) 。
  • 如果 key 已经存在,我们 remappingFunction 可以选择合并的方式。

如果目前我想要把键为 i 的值进行 +1 操作,如果当前键不存在,则初始化值为 1 。如何实现呢?

假定 map 为 HashMap 的实例对象。

map.merge(i, 1, (old, new) -> old + new);  // map.get(i)++

解释:

  • map: 这是一个Map接口的实例,可以是HashMapTreeMap等具体实现之一。
  • i: 这是要待查找或添加的键。
  • 1: 这是与键i关联的值,如果键i尚不存在于哈希表中,则将此值作为初始值插入。
  • (o1, o2) -> o1 + o2: 这是一个Lambda表达式,实现了BiFunction<? super V, ? super V, ? extends V>接口。这里,V是哈希表泛型的类型。Lambda表达式接收两个参数:old(当前哈希表中键i的值,如果键不存在则为null)和new(要合并的值,在这个例子中是1)。表达式的结果是将这两个值相加。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com