2

我正在阅读一篇IBM DeveloperWorks 文章以了解如何实现 ConcurrentHashMap。“删除操作”部分建议删除操作是一个两步过程:

  1. 找到 Entry 元素并将其设为 null
  2. 从头部到移除元素的链部分被克隆并连接到移除元素之后的链的其余部分。

不过我在这里有一个问题,因为我在Docjar中检查了相应的代码,但在remove(Object key, int hash, Object value).

我不确定我是否遗漏了什么,或者实现与文章不同?

4

1 回答 1

2

线

head = new Entry(p.hash, p.key, p.value, head);

进行克隆,它不是“Object.clone()”克隆,而是“复制构造函数”——这仍然是更一般意义上的克隆。

请注意,这行是在 10 年前的文章中,在当前的实现中找不到,这里的实现remove(Object key, Object value)完全不同。

于 2013-03-02T12:59:51.833 回答