Java:某处是否还有另一种链表?

标签 java data-structures collections linked-list

是否有一个预先实现的链表可以使用 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/

相关文章:

Java-截取两个集合并获取剩余元素

java - 在 Linux 中为我的 JSP 页面放置 Java 类的位置

java - 创建独立的哈希函数

java - 匹配两个字符串列表,其中一个列表可以包含带有通配符 '?' 的字符串

C# 堆栈溢出异常

java - 在 Java 中更新 Set 的对象

java - 查找所有 "character-equal"字符串的高效算法?

java - 根据余数计算数组大小

java - Spring Boot + Gradle - 在哪里放置环境配置?

c - 在 C 中使用灵活的数组成员是不好的做法吗?