我需要一个非常快速的(插入,删除,包含)高度并发的列表,可以使用比较器/可比较器对其进行排序。

如果现有的ConcurrentSkipListSet是一个列表而不是一个集合,则将是理想的。我需要在数据结构中插入多个相等的项。

我目前正在考虑使用LinkedDeque,如果找不到更好的方法,但是该结构比争用高时的跳过列表要慢得多。

有什么建议么?

编辑:最低限度,我实际需要的是使用compareTo进行排序的东西,可以同时插入并可以使用对象标识删除/获取项目。注释中提到的所有其他并行要求仍然适用。

最佳答案



因此,SkipList data-structure的核心是一个链表。如果您担心订单以及轻松轻松地遍历订单的能力,SkipList也将很好地工作。这也是平衡树的概率替代方案,这就是为什么它也可以是SetMap的原因。内存中的数据结构如下所示:

java - ConcurrentSkipList?也就是说,不是ConcurrentSkipListSet-LMLPHP

引用Javadocs:



如果您更多地解释了List想要的功能,那么我可以更好地回答ConcurrentSkipListSet是否可以工作。

编辑:

啊,我明白了。在评论中来回反复后,似乎您需要能够将两个等效的对象粘贴到Set中,这是不可能的。我们得出的结论是compareTo(...)永远不会返回0。这有点麻烦,但是使用AtomicLong为每个对象生成一个唯一的数字,然后您可以在真正的比较字段中对这些数字进行比较(在这种情况下为数字超时值)是平等的。这将允许将具有相同字段的对象插入Set并根据该字段以正确的顺序进行保存。

10-07 17:03