Skip to content

Commit 79cfdc1

Browse files
committed
Update HashMap.md
1 parent d8d16a7 commit 79cfdc1

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

docs/java/collection/HashMap.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ static int hash(int h) {
5656

5757
所谓 **“拉链法”** 就是:将链表和数组相结合。也就是说创建一个链表数组,数组中每一格就是一个链表。若遇到哈希冲突,则将冲突的值加到链表中即可。
5858

59-
![jdk1.8之前的内部结构](https://user-gold-cdn.xitu.io/2018/3/20/16240dbcc303d872?w=348&h=427&f=png&s=10991)
59+
![jdk1.8之前的内部结构](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/jdk1.8之前的内部结构.png)
6060

6161
### JDK1.8之后
6262
相比于之前的版本,jdk1.8在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间。
@@ -170,7 +170,9 @@ static final class TreeNode<K,V> extends LinkedHashMap.Entry<K,V> {
170170
```
171171
## HashMap源码分析
172172
### 构造方法
173-
![四个构造方法](https://user-gold-cdn.xitu.io/2018/3/20/162410d912a2e0e1?w=336&h=90&f=jpeg&s=26744)
173+
174+
HashMap 中有四个构造方法,它们分别如下:
175+
174176
```java
175177
// 默认构造函数。
176178
public HashMap() {
@@ -237,9 +239,7 @@ HashMap只提供了put用于添加元素,putVal方法只是给put方法调用
237239
- ①如果定位到的数组位置没有元素 就直接插入。
238240
- ②如果定位到的数组位置有元素就和要插入的key比较,如果key相同就直接覆盖,如果key不相同,就判断p是否是一个树节点,如果是就调用`e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value)`将元素添加进入。如果不是就遍历链表插入(插入的是链表尾部)。
239241

240-
241-
242-
![put方法](https://user-gold-cdn.xitu.io/2018/9/2/16598bf758c747e6?w=999&h=679&f=png&s=54486)
242+
![put方法](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/put方法.png)
243243

244244
```java
245245
public V put(K key, V value) {

0 commit comments

Comments
 (0)