是否有一个预先实现的链表可以使用 id 而不是数组索引来实现?
动机:我想在这里完成的是一个可以通过多个并行线程删除女巫单元的链表。 java的LinkedList的问题在于引用是索引引用。
澄清一下:假设我有三个线程和一个包含三个单元格的 LinkedList。线程 1 生成单元格 1(或 0,但无论如何...),...线程 3 生成单元格 3。所以基本上,线程向其单元格生成内容,这些单元格充当缓冲区。现在,如果线程 2 删除了单元格 2(出于业务逻辑原因),线程 #3 的引用将更改为 #2。当然,如果线程 #3 仍在单元 #3 上工作,则无法完成此操作,因此需要同步,即使线程 #3 当前未使用其单元,仍需要告知线程它将使用单元#2 从现在开始。
解决方案:如果使用 id 而不是数组索引引用来实现链表,其他线程将永远不会看到更改,即可以安全地删除单元格 2,因为线程 #3 将使用它的单元格,如下所示linkedlist.add(id 3, C cell) 而不是这样的 add(int index, C cell)。
我猜这样的东西已经在某个地方实现了,但经过一段时间的谷歌搜索后,我找不到它。感谢所有帮助!
最佳答案
LinkedHashMap
似乎相关,但我不确定它是否完全适合您的场景。尝试一下。它是一个 HashMap
,因此您可以使用其键来访问项目。
关于Java:某处是否还有另一种链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535736/