
2021-01-21:java中,HashMap的读流程是什么?
发布日期:2021-05-04 20:00:49
浏览次数:8
分类:技术文章
本文共 774 字,大约阅读时间需要 2 分钟。
福哥答案2020-01-21:
jdk1.7读流程:
1.key是否为空值null,如果为空,直接遍历table[0]链表,寻找key==null键。调用的是getForNullKey()方法。如下: 1.1.如果元素个数为0,直接返回null。 1.2.遍历table[0]。 1.3.遍历到了,返回值;没遍历到,返回null。 2.key不为空,获取entry。调用getEntry方法。 2.1.如果元素个数为0,直接返回null。 2.2.计算hash。如果key为null,hash值是0;如果不为0,调用hash()方法。 2.3.计算索引位置。调用indexFor()方法。 2.4.遍历table[索引]。哈希相等,key相等(【==相等】或者【key不为空并且equals()相等】),这种情况就算找到了。 2.5.遍历到了,返回值;没遍历到,返回null。 3.如果entry为空,返回空;如果entry不为空,返回entry的value值。jdk1.8读流程:
1.计算哈希。调用hash()方法。 2.调用getNode()方法获取node对象。 2.1.table数组已经初始化,长度大于0,根据hash寻找table中的项也不为空。 2.2.table[索引]中的first元素的key相等,直接返回node;不相等,执行下一步骤2.3。 2.3.如果first元素的next节点存在,继续下一步骤2.4。 2.4.如果first元素是TreeNode,调用getTreeNode()方法。 2.4.1.获取root节点。 2.4.2.调用find方法,获取TreeNode对象。 2.5.如果first元素不是TreeNode,遍历链表。 3.如果node对象为空,直接返回null;如果不为空,返回e.value。发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月12日 17时30分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第14章 使用Kotlin 进行 Android 开发(2)
2019-03-01
第1讲 快速入门 《Kotlin 极简教程 》
2019-03-01
Kotlin + Spring Boot :下一代 Java 服务端开发 (视频)
2019-03-01
IDEA 工程文件 UTF-8 编码设置
2019-03-01
10年后6G将问世,速度有望比5G快100倍
2019-03-01
5G蝴蝶效应:孕育万亿级产业
2019-03-01
华为超越三星拿下第一!2019年全球5G手机出货量榜单揭晓
2019-03-01
中国电信为武汉协和搭建的5G远程会诊平台正式投入使用!
2019-03-01
PPT分享 | 中国移动十大领域5G应用案例
2019-03-01
宝信软件丛力群:工业互联网赋能钢铁行业高质量发展
2019-03-01
芯片巨头AMD获得许可:供货华为
2019-03-01
7个国家级、省级车联网先导区详细介绍!
2019-03-01
小米等9家中企又被美“拉黑”;工信部公布81项通信行业标准;诺基亚获5G合同...
2019-03-01
79家信息技术企业,募资1600亿!科创板企业募资、市值、涨幅情况排行榜发布...
2019-03-01
官宣:湘江智能“车-站-路-云”一体化协同智慧公交解决方案来啦!
2019-03-01
【论文写作PS】两张图片合为一张,不覆盖
2019-03-01
【程序】打包opencv程序
2019-03-01
bug宝典JAVA篇 maven打不进xml文件
2019-03-01
第3.1.6章 WEB系统最佳实践 js控件之bootstrap table
2019-03-01