千家信息网

Java8的HashMap怎么用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章给大家分享的是有关Java8的HashMap怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java8HashMapJava8对HashMap进行了一些修改,最
千家信息网最后更新 2025年01月19日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安全错误 数据库的锁怎样保障安全 互联网数据库参考文献格式 安徽软件开发解决方案定制 竞技世界网络技术有限公司上市 怎么把文件安装到云服务器里 元旺网络技术集团 高级软件开发工程师证书查询 宠物防丢数据管理系统数据库 985软件开发博士工资 问道手游的服务器在哪里 网络安全名词 可证明安全 软件开发的企业的税金 ibatis数据库是字符串吗 数据库技术与应用复习重点 大的数据用什么数据库 服务器信号质量排行 学校网络安全日宣传单 shp文件到数据库错误 南京墨坊互联网科技有限公司 网络安全经理实务教程 串口屏产品软件开发四路 imap服务器怎么改密码 加强网络安全建设措施 如何填写服务器密码 乐尚软件开发有限公司怎么样 服务器的集中认证和管理 汕尾市网络安全知识宣传 软件开发供应商比选条件 数据库导出dmp文件 网络安全与执法类公务员近视 软件开发做软件测试
0