Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
清新范er
JavaGuide
提交
d113b88b
J
JavaGuide
项目概览
清新范er
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d113b88b
编写于
2月 20, 2021
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update HashMap(JDK1.8)源码+底层数据结构分析.md
上级
566d50da
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
2 deletion
+2
-2
docs/java/collection/HashMap(JDK1.8)源码+底层数据结构分析.md
docs/java/collection/HashMap(JDK1.8)源码+底层数据结构分析.md
+2
-2
未找到文件。
docs/java/collection/HashMap(JDK1.8)源码+底层数据结构分析.md
浏览文件 @
d113b88b
...
...
@@ -236,8 +236,8 @@ HashMap只提供了put用于添加元素,putVal方法只是给put方法调用
**对putVal方法添加元素的分析如下:**
-
①
如果定位到的数组位置没有元素 就直接插入。
-
②
如果定位到的数组位置有元素就和要插入的key比较,如果key相同就直接覆盖,如果key不相同,就判断p是否是一个树节点,如果是就调用
`e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value)`
将元素添加进入。如果不是就遍历链表插入(插入的是链表尾部)。
1.
如果定位到的数组位置没有元素 就直接插入。
2.
如果定位到的数组位置有元素就和要插入的key比较,如果key相同就直接覆盖,如果key不相同,就判断p是否是一个树节点,如果是就调用
`e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value)`
将元素添加进入。如果不是就遍历链表插入(插入的是链表尾部)。
ps:下图有一个小问题,来自
[
issue#608
](
https://github.com/Snailclimb/JavaGuide/issues/608
)
指出:直接覆盖之后应该就会 return,不会有后续操作。参考 JDK8 HashMap.java 658 行。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录