1. compute、 computeIfAbsent、computeIfPresent 这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式: compute(K key,
这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式:
Map map = new HashMap<>();map.put("key1", 1);map.compute("key1", (k, v) -> v + 1); // 现在键 "key1" 对应的值是 2map.compute("key2", (k, v) -> v + 1); // 因为键 "key2" 不存在,所以v没有值,会报错NullPointerException
Map> map = new HashMap<>();// 检查键 "key1" 是否存在于 Map 中,如果不存在,则使用 lambda 表达式计算值map.computeIfAbsent("key1", k -> new ArrayList<>()).add(42);// 检查键 "key2" 是否存在于 Map 中,如果不存在,则使用 lambda 表达式计算值map.computeIfAbsent("key2", k -> new ArrayList<>()).add(123);// 检查键 "key1" 是否存在于 Map 中,由于它已存在,不会执行计算,只会添加到现有的列表中map.computeIfAbsent("key1", k -> new ArrayList<>()).add(99);System.out.println(map); // 输出:{key1=[42, 99], key2=[123]}
Map map = new HashMap<>();map.put("key1", 1);map.computeIfAbsent("key1", k -> 2); // 不会执行计算函数,键 "key1" 对应的值仍为 1map.computeIfAbsent("key2", k -> 2); // 键 "key2" 不存在,计算函数返回 2,现在键 "key2" 对应的值是 2System.out.println(map); // 输出:{key1=1, key2=2}
Map map = new HashMap<>();map.put("key1", 1);map.computeIfPresent("key1", (k, v) -> v + 1); // 现在键 "key1" 对应的值是 2map.computeIfPresent("key2", (k, v) -> v + 1); // 因为键 "key2" 不存在,所以不会进行操作System.out.println(map); // 输出:{key1=2}
总结:
这些方法允许您对 Map 中的键值对进行灵活的操作,根据需要更新、插入或删除键值对。
getOrDefault(Object key, V defaultValue) 方法是 Java Map 接口的一个方法,用于获取指定键的值,如果该键不存在于 Map 中,则返回一个默认值。该方法的签名如下:
V getOrDefault(Object key, V defaultValue)
Map map = new HashMap<>();map.put("apple", 5);map.put("banana", 3);int countApple = map.getOrDefault("apple", 0); // 返回值为 5,因为 "apple" 存在于 Map 中int countGrapes = map.getOrDefault("grapes", 0); // 返回值为 0,因为 "grapes" 不存在于 Map 中
总结:
这个方法通常用于避免在获取值之前需要先检查键是否存在的情况,提供了一种简洁的方式来处理这种情况。如果键不存在,它会返回指定的默认值,而不会引发异常。
来源地址:https://blog.csdn.net/Crystalqy/article/details/133785390
--结束END--
本文标题: jdk 8 hashMap相关知识点
本文链接: https://www.lsjlt.com/news/429775.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0