From 64cbe0833cdc19700335ac9016b5977c3e324f4f Mon Sep 17 00:00:00 2001 From: yqq <129863697+yqq20001015@users.noreply.github.com> Date: Mon, 27 May 2024 23:14:37 +0800 Subject: [PATCH] Update linkedhashmap-source-code.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一些细节的改动 --- docs/java/collection/linkedhashmap-source-code.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/java/collection/linkedhashmap-source-code.md b/docs/java/collection/linkedhashmap-source-code.md index 47904004..41d41461 100644 --- a/docs/java/collection/linkedhashmap-source-code.md +++ b/docs/java/collection/linkedhashmap-source-code.md @@ -272,7 +272,7 @@ void afterNodeAccess(Node < K, V > e) { // move node to last if (b == null) head = a; else - //如果后继节点不为空,则让前驱节点指向后继节点 + //如果前驱节点不为空,则让前驱节点指向后继节点 b.after = a; //如果后继节点不为空,则让后继节点指向前驱节点 @@ -372,10 +372,10 @@ void afterNodeRemoval(Node e) { // unlink 从源码可以看出, `afterNodeRemoval` 方法的整体操作就是让当前节点 p 和前驱节点、后继节点断开联系,等待 gc 回收,整体步骤为: -1. 获取当前节点 p、以及 e 的前驱节点 b 和后继节点 a。 +1. 获取当前节点 p、以及 p 的前驱节点 b 和后继节点 a。 2. 让当前节点 p 和其前驱、后继节点断开联系。 3. 尝试让前驱节点 b 指向后继节点 a,若 b 为空则说明当前节点 p 在链表首部,我们直接将 head 指向后继节点 a 即可。 -4. 尝试让后继节点 a 指向前驱节点 b,若 a 为空则说明当前节点 p 在链表末端,所以直接让 tail 指针指向前驱节点 a 即可。 +4. 尝试让后继节点 a 指向前驱节点 b,若 a 为空则说明当前节点 p 在链表末端,所以直接让 tail 指针指向前驱节点 b 即可。 可以结合这张图理解,展示了 key 为 13 的元素被删除,也就是从链表中移除了这个元素。