From 7efbe3a4683d753f6c2957a2653f69dd4201ef65 Mon Sep 17 00:00:00 2001 From: jun <2395306536@qq.com> Date: Wed, 2 Aug 2023 10:39:56 +0800 Subject: [PATCH 1/2] update linkedhashmap-source-code.md --- docs/java/collection/linkedhashmap-source-code.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/java/collection/linkedhashmap-source-code.md b/docs/java/collection/linkedhashmap-source-code.md index 3ea1f36a..d74a62cb 100644 --- a/docs/java/collection/linkedhashmap-source-code.md +++ b/docs/java/collection/linkedhashmap-source-code.md @@ -118,6 +118,7 @@ LRUCache < Integer, String > cache = new LRUCache < > (2); cache.put(1, "one"); cache.put(2, "two"); cache.put(3, "three"); +cache.put(4, "four"); for (int i = 0; i < 4; i++) { System.out.println(cache.get(i)); } @@ -129,6 +130,7 @@ for (int i = 0; i < 4; i++) { null null three +four ``` 从输出结果来看,由于缓存容量为 2 ,因此,添加第 3 个元素时,第 1 个元素会被删除。添加第 4 个元素时,第 2 个元素会被删除。 From 045cef80d36094ebaf52b969d2db8a886f18fe2b Mon Sep 17 00:00:00 2001 From: jun <2395306536@qq.com> Date: Wed, 2 Aug 2023 10:51:23 +0800 Subject: [PATCH 2/2] update linkedhashmap-source-code.md --- docs/java/collection/linkedhashmap-source-code.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/collection/linkedhashmap-source-code.md b/docs/java/collection/linkedhashmap-source-code.md index d74a62cb..2946bb35 100644 --- a/docs/java/collection/linkedhashmap-source-code.md +++ b/docs/java/collection/linkedhashmap-source-code.md @@ -141,7 +141,7 @@ four 在正式讨论 `LinkedHashMap` 前,我们先来聊聊 `LinkedHashMap` 节点 `Entry` 的设计,我们都知道 `HashMap` 的 bucket 上的因为冲突转为链表的节点会在符合以下两个条件时会将链表转为红黑树: -1. 链表上的节点个数达到树化的阈值-1,即`TREEIFY_THRESHOLD - 1`。 +1. 链表上的节点个数达到树化的阈值7,即`TREEIFY_THRESHOLD - 1`。 2. bucket 的容量达到最小的树化容量即`MIN_TREEIFY_CAPACITY`。 而 `LinkedHashMap` 是在 `HashMap` 的基础上为 bucket 上的每一个节点建立一条双向链表,这就使得转为红黑树的树节点也需要具备双向链表节点的特性,即每一个树节点都需要拥有两个引用存储前驱节点和后继节点的地址,所以对于树节点类 `TreeNode` 的设计就是一个比较棘手的问题。