Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/b-2Java集合.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,13 @@ static int hash(int h) {

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

![jdk1.8之前的内部结构-HashMap](../../JavaGuide/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png)
![jdk1.8之前的内部结构-HashMap](images/jdk1.8之前的内部结构-HashMap.png)

#### 2.2.8.2. JDK1.8 之后

相比于之前的版本, JDK1.8 之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。

![jdk1.8之后的内部结构-HashMap](../../JavaGuide/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png)
![jdk1.8之后的内部结构-HashMap](images/jdk1.8之后的内部结构-HashMap.png)

> TreeMap、TreeSet 以及 JDK1.8 之后的 HashMap 底层都用到了红黑树。红黑树就是为了解决二叉查找树的缺陷,因为二叉查找树在某些情况下会退化成一个线性结构。
Expand Down