千家信息网

Java8的HashMap怎么用

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章给大家分享的是有关Java8的HashMap怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java8HashMapJava8对HashMap进行了一些修改,最
千家信息网最后更新 2025年11月16日Java8的HashMap怎么用

这篇文章给大家分享的是有关Java8的HashMap怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Java8HashMap

  Java8对HashMap进行了一些修改,最大的不同就是利用了红黑树,所以其由数组+链表+红黑树组成。

  根据Java7HashMap的介绍,我们知道,查找的时候,根据hash值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为O(n)。

  为了降低这部分的开销,在Java8中,当链表中的元素超过了8个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为O(logN)。

  下面,我们还是用代码来介绍吧,个人感觉,Java8的源码可读性要差一些,不过精简一些。

  Java7中使用Entry来代表每个HashMap中的数据节点,Java8中使用Node,基本没有区别,都是key,value,hash和next这四个属性,不过,Node只能用于链表的情况,红黑树的情况需要使用TreeNode。

  我们根据数组元素中,第一个节点数据类型是Node还是TreeNode来判断该位置下是链表还是红黑树的。

  和Java7稍微有点不一样的地方就是,Java7是先扩容后插入新值的,Java8先插值再扩容,不过这个不重要。

数组扩容

  resize()方法用于初始化数组或数组扩容,每次扩容后,容量为原来的2倍,并进行数据迁移。

get过程分析

  相对于put来说,get真的太简单了。

  计算key的hash值,根据hash值找到对应数组下标:hash&(length-1)

  判断数组该位置处的元素是否刚好就是我们要找的,如果不是,走第三步

  判断该元素类型是否是TreeNode,如果是,用红黑树的方法取数据,如果不是,走第四步

  遍历链表,直到找到相等(==或equals)的key

感谢各位的阅读!关于"Java8的HashMap怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

数组 元素 数据 位置 就是 还是 复杂 下标 内容 复杂度 情况 方法 时候 时间 更多 篇文章 类型 节点 不同 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技创新产品 数据库查询数据哪个语句 视易服务器7600 简述关系数据库设计的步骤及方法 数据库管理系统基本的加密方式 炫舞时代服务器无法连接 网络安全生态把本体 国家网络安全产业园区通州东部 网络安全相关英文演讲视频 打字高手83服务器注册机 本溪会员报单软件开发多少钱 服务器会在第一次响应 网络安全吕波 数据库会话和事务的区别 网络安全法内容上的突出亮点有 济南智牛网络技术有限公司 阜阳网络安全知识竞答上线 重庆计算机网络技术专业 郑州无法定位服务器 阿帕奇服务器配置 数据库适合什么行业 深圳服务器硬件销售公司 我的世界服务器区块自动加载 德州机构养老软件开发系统 数据库技术与应用教程电子版 温州哪里冰箱软件开发 我的世界如何转换服务器 学校软件开发需求 南邮通达王传栋软件开发技术基础 广东计算机应用软件开发多少钱
0