瀏覽代碼

docs: 更新20260731课堂笔记,同步代码变更——补充Demo05 HashMap结构总结(树化条件需两条件同时满足/退化条件)

WanJL 3 周之前
父節點
當前提交
985f5f3d50
共有 2 個文件被更改,包括 20 次插入1 次删除
  1. 5 0
      授课代码/c260731/src/course/Demo05.java
  2. 15 1
      课堂笔记/01-JavaSE基础-笔记/20260731-笔记.md

+ 5 - 0
授课代码/c260731/src/course/Demo05.java

@@ -65,6 +65,11 @@ public class Demo05 {
             static final int UNTREEIFY_THRESHOLD = 6;
             数组+链表转为红黑树的第2个条件:数组长度大于64
             static final int MIN_TREEIFY_CAPACITY = 64;
+     总结:
+        1、HashMap的结构是 数组+链表
+        2、达到一定条件,会转为 数组+红黑树
+        3、树化条件:数组长度大于64,链表节点长度超过8。
+        4、链表节点长度小于6就退化回链表。
 
      */
 }

+ 15 - 1
课堂笔记/01-JavaSE基础-笔记/20260731-笔记.md

@@ -421,7 +421,7 @@ Java 1.8 之后引入了**红黑树**,1.8 之后的 HashMap 有两种形态:
 - **第 1 种**:数组 + 链表(哈希表)
 - **第 2 种**:在哈希表满足了某些条件后,从「数组 + 链表」转换为「数组 + 红黑树」,保证性能不会降低
 
-简单来说:**链表的节点数超过 8 个,就转为红黑树**。
+简单来说:**链表的节点数超过 8 个,且数组长度大于 64 时,链表就转为红黑树**(两个条件需**同时满足**)
 
 ### HashMap 关键常量
 
@@ -433,6 +433,20 @@ Java 1.8 之后引入了**红黑树**,1.8 之后的 HashMap 有两种形态:
 | `UNTREEIFY_THRESHOLD` | `6` | 当节点长度小于 6 时,从红黑树退化回链表 |
 | `MIN_TREEIFY_CAPACITY` | `64` | 数组 + 链表转红黑树的**第 2 个条件**:数组长度必须大于 64 |
 
+### 总结(HashMap 结构要点)
+
+```java
+// 来源:course/Demo05.java(注释部分·总结)
+1、HashMap的结构是 数组+链表
+2、达到一定条件,会转为 数组+红黑树
+3、树化条件:数组长度大于64,链表节点长度超过8。
+4、链表节点长度小于6就退化回链表。
+```
+
+1. **HashMap 的结构是「数组 + 链表」**,达到一定条件后转为「数组 + 红黑树」
+2. **树化条件(两个需同时满足)**:① 数组长度大于 64(`MIN_TREEIFY_CAPACITY`)② 链表节点长度超过 8(`TREEIFY_THRESHOLD`)
+3. **退化条件**:链表节点长度小于 6(`UNTREEIFY_THRESHOLD`)就退化回链表,避免频繁树化/退化造成抖动
+
 ### 代码示例
 
 ```java