iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >jdk 8 hashMap相关知识点
  • 844
分享到

jdk 8 hashMap相关知识点

java开发语言hashMap 2023-10-12 19:10:44 844人浏览 八月长安
摘要

1. compute、 computeIfAbsent、computeIfPresent 这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式: compute(K key,

1. compute、 computeIfAbsent、computeIfPresent

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

compute(K key, BiFunction remappingFunction):

  • compute 方法用于计算给定键的新值,该方法接受一个键和一个计算函数 remappingFunction 作为参数。
  • 如果 Map 中存在指定的键,则会将键对应的值和计算函数一起传递给 remappingFunction,并用 remappingFunction 返回的结果更新该键的值。
  • 如果 Map 中不存在指定的键,则 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):

  • computeIfAbsent 方法用于在给定的键在 Map 中不存在时,根据键的映射关系计算一个值并将其插入到 Map 中
  • 如果键已经存在于 Map 中,则 computeIfAbsent 方法不会执行计算,而是返回现有的值。
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):

  • computeIfPresent 方法用于在 Map 中存在指定的键时,根据键的值计算新的值。
  • 如果 Map 中不存在指定的键,则不会执行计算函数 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}

总结:

  • compute 方法无论键是否存在都会执行计算函数。
  • computeIfAbsent 方法仅在键不存在时执行计算函数。
  • computeIfPresent 方法仅在键存在时执行计算函数。

这些方法允许您对 Map 中的键值对进行灵活的操作,根据需要更新、插入或删除键值对。

2. getOrDefault

getOrDefault(Object key, V defaultValue) 方法是 Java Map 接口的一个方法,用于获取指定键的值,如果该键不存在于 Map 中,则返回一个默认值。该方法的签名如下:

V getOrDefault(Object key, V defaultValue)
  • key 是要检索的键。
  • 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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • jdk 8 hashMap相关知识点
    1. compute、 computeIfAbsent、computeIfPresent 这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式: compute(K key,...
    99+
    2023-10-12
    java 开发语言 hashMap
  • HashMap相关知识点有哪些
    本篇内容介绍了“HashMap相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HashMap 和 HashSet 是 Java...
    99+
    2023-06-17
  • HTML5相关知识点
    这篇文章主要介绍了HTML5相关知识点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SGML(标准通用标记语言)和HTML(超文本标记语言)...
    99+
    2022-10-19
  • 【字节面试】Fail-fast知识点相关知识点
    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 1.问题 什么是Fail-fast机制? Hash...
    99+
    2023-08-31
    面试 java 字节 fail-fast Enumeration
  • HTML相关知识点总结
    目录简介HTML文档和网页的关系呢?HTML的标签样子?HTML基本概念标签元素属性注释编码规则HTML常用元素标题段落链接跳转页面:跳转锚点图片列表有序列表无序列表定义列表表格块表...
    99+
    2022-11-12
  • 关于python列表相关知识点
    目录python列表1.列表的创建与删除列表的特点1.列表元素按顺序有序排序2.索引映射唯一数据3.列表可以存储重复数据4.任意数据类型混存5.根据需要动态分配和回收内存2.列表的查...
    99+
    2023-05-16
    python python列表
  • YARN相关知识点有哪些
    本篇内容介绍了“YARN相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!YARN产生背景为什么会产生YRAN?这个与MapRe...
    99+
    2023-06-19
  • Baseline相关知识点有哪些
    本篇内容主要讲解“Baseline相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Baseline相关知识点有哪些”吧! 在 Oracle Da...
    99+
    2022-10-19
  • CSS相关知识点有哪些
    本篇内容介绍了“CSS相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、CSS选择器 ...
    99+
    2022-10-19
  • Git相关知识点有哪些
    这篇文章主要讲解了“Git相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git相关知识点有哪些”吧!一、Git工作流程以上包括一些简单而常用...
    99+
    2022-10-19
  • MySQL相关知识点有哪些
    这篇文章主要介绍了MySQL相关知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1、数据库架构1.1...
    99+
    2022-10-19
  • HTML5拖拽的相关知识点
    本篇内容主要讲解“HTML5拖拽的相关知识点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5拖拽的相关知识点”吧!拖拽相关属性draggable属性是h...
    99+
    2022-10-19
  • 云服务器相关知识点
    云服务器是一种虚拟的数据中心基础设施,它允许用户将数据存储在云中,并使用公有云提供商的资源进行处理。以下是一些有关云服务器的相关知识点: 云服务器的类型:包括公有云、私有云和混合云。公有云通常由第三方提供商提供,而私有云通常由企业自行管...
    99+
    2023-10-26
    知识点 服务器
  • python装饰器相关知识点
    小编给大家分享一下python装饰器相关知识点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、装饰器1.相关知识点*args:负责将多余的位置实参汇总,赋值给a...
    99+
    2023-06-29
  • KeyDB的相关知识点有哪些
    今天小编给大家分享一下KeyDB的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线程模型KeyDB将redi...
    99+
    2023-06-19
  • mysql binlog相关知识点有哪些
    本篇内容主要讲解“mysql binlog相关知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql binlog相关知识点有哪些”吧! ...
    99+
    2022-10-19
  • synchronized的相关知识点有哪些
    这篇文章主要讲解了“synchronized的相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“synchronized的相关知识点有哪些”吧!...
    99+
    2022-10-19
  • JVM相关的知识点有哪些
    这篇文章主要讲解了“JVM相关的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM相关的知识点有哪些”吧!JVM作为java运行的基础,很难相...
    99+
    2022-10-19
  • library cache相关知识点有哪些
    library cache相关知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。共享游标Sql首次解析后会生成父游标和1个子游标(...
    99+
    2022-10-19
  • Redis 事务知识点相关总结
    目录01 事务简介02 命令错误导致的事务提交失败,所有命令都不执行03 运行时错误导致数据错误04 丢弃事务05 watch命令06 总结Redis中的事务介绍  &nb...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作