欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > java Map接口的computeIfPresent和putIfAbsent方法介绍

java Map接口的computeIfPresent和putIfAbsent方法介绍

2024/10/24 5:22:40 来源:https://blog.csdn.net/qq_27390023/article/details/141102798  浏览:    关键词:java Map接口的computeIfPresent和putIfAbsent方法介绍

Map接口中的computeIfPresentputIfAbsent方法是Java 8引入的两个有用的方法,用于操作映射中的值。它们使得对映射的更新操作更加简洁和灵活。以下是这两个方法的详细介绍:

computeIfPresent 方法

方法签名

V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
参数
  • key:要检查的映射中的键。
  • remappingFunction:一个BiFunction,它接受两个参数:键和当前值,并返回新的值。如果remappingFunction返回null,则键将从映射中删除。
返回值
  • 返回映射中指定键的新值。如果remappingFunction返回null,则键将从映射中删除,方法返回null。如果键不存在于映射中,方法将返回null
功能
  • 如果映射中存在指定的键,则应用remappingFunction来计算该键的新值,并将其替换原有值。
  • 如果remappingFunction返回null,则从映射中移除该键。
示例
import java.util.*;public class ComputeIfPresentExample {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("apple", 2);map.put("banana", 3);// 仅在存在键 "apple" 时更新其值map.computeIfPresent("apple", (key, value) -> value + 1);// 结果: {apple=3, banana=3}System.out.println(map);// 键 "grape" 不存在,所以不做任何操作map.computeIfPresent("grape", (key, value) -> value + 1);// 结果: {apple=3, banana=3}System.out.println(map);// 将 "apple" 的值设置为 null,这将移除 "apple"map.computeIfPresent("apple", (key, value) -> null);// 结果: {banana=3}System.out.println(map);}
}

putIfAbsent 方法

方法签名
V putIfAbsent(K key, V value)
参数
  • key:要插入或检查的键。
  • value:如果键不存在于映射中,则插入的值。
返回值
  • 返回映射中指定键的旧值,如果该键之前已存在。如果键不存在,则返回null
功能
  • 如果映射中已经包含指定的键,则不会更新映射中的值,方法返回旧值。
  • 如果映射中不包含该键,则将指定的值插入映射中,并返回null
示例
import java.util.*;public class PutIfAbsentExample {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("apple", 2);map.put("banana", 3);// 键 "apple" 已存在,不会插入新值,返回旧值 2Integer oldValue = map.putIfAbsent("apple", 10);// 结果: 2System.out.println(oldValue);// 键 "grape" 不存在,将其插入值 5,并返回 nulloldValue = map.putIfAbsent("grape", 5);// 结果: nullSystem.out.println(oldValue);// 结果: {apple=2, banana=3, grape=5}System.out.println(map);}
}

总结

  • computeIfPresent:用于在映射中存在指定键时,计算并更新该键的值。如果计算结果为null,则键会从映射中删除。
  • putIfAbsent:用于在映射中不存在指定键时插入新键值对。如果键已经存在,则不会进行插入操作,并返回现有值。

这两个方法都简化了对映射的操作,使得更新和插入操作更加简洁且减少了条件检查的需要。

版权声明:

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

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