JavaGuide icon indicating copy to clipboard operation
JavaGuide copied to clipboard

手写跳表删除逻辑 bugfix

Open deanbear opened this issue 1 year ago • 0 comments

该 PR 修改点如下: 以下是修改后的表达及逻辑:

  1. 将变量名 "leveCount" 修改为 "levelCount"。

  2. 修改手写跳表中 delete 方法的逻辑。由于数组下标从 0 开始,因此在检查是否有一级索引为空时,应该使用 "levelCount - 1" 作为索引条件。这样可以确保在实际存在目标索引层级为空时,能正确减少层级计数,避免后续无法使用存在的高层级索引以及无法回收高层级孤儿索引的情况发生。

修改后的代码如下:

// 从最高级开始查看是否有一级索引为空,若为空则层级减1
while (levelCount > 1 && h.forwards[levelCount - 1] == null) {
    levelCount--;
}

这样可以确保正确处理跳表中的索引层级,避免出现索引层级计数错误以及无法使用或回收索引的问题。

deanbear avatar Mar 22 '24 18:03 deanbear