文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

jdk 8 hashMap相关知识点

2023-10-12 19:00

关注

1. compute、 computeIfAbsent、computeIfPresent

这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式:

compute(K key, BiFunction remappingFunction):

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

computeIfAbsent(K key, Function mappingFunction):

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}

computeIfPresent(K key, BiFunction remappingFunction):

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 中的键值对进行灵活的操作,根据需要更新、插入或删除键值对。

2. getOrDefault

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯