Java8 Map pubIfAbsent、computeIfAbsent、computeIfPresent使用方法特性

本文介绍了Java8中Map接口的三个实用方法:putIfAbsent、computeIfAbsent和computeIfPresent。通过源码分析,详细阐述了这三个方法在处理映射关系时的特性和使用场景,帮助开发者更高效地操作Map。
摘要由CSDN通过智能技术生成

pubIfAbsent 源码:

/**
 * 入参key、value。
 * 如果获取到key的值为null或不存在,则对key进行覆盖添加。并返回新的value值。
 * 如果对应的key的值是存在的且不等于null,返回get到的值。
 */
default V putIfAbsent(K key, V value) {
     V v = get(key);
     if (v == null) {
         v = put(key, value);
     }
     return v;
}

 computeIfAbsent 源码:

/**
 * 入参key,Function的对象(可以使用lambda表达式,暂时不清楚其实现)
 * Function对象使用lambda表达式 k -> v 入参是key, v是返回值
 * mappingFunction.apply()实现了部分业务并返回value
 *
 * 如果key获取到的value是null或不存在,获取到value,并对key,value进行put。并返回put结果(value)
 * 如果value值已经存在,且不等于null,返回value值。
 *
 */
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 = mapping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值