Java中的数据结构是否与TreeSet类似但允许重复?

时间:2012-10-18 21:56:04

标签: java algorithm data-structures

我想保留顺序并允许重复。我应该为自己建一个吗?或者有什么方法可以调整Comparator(我认为remove()和insert()使用相同的)?感谢。

我希望remove()在O(log n)中,并且add()也是O(log n)。

PriorityQueue是一种方法,但其remove()方法需要O(n)。如果可能的话,我该怎么调整呢?

2 个答案:

答案 0 :(得分:2)

您能看到TreeBagApache Commons-Collections吗?这使用TreeMap来提供数据存储,这为containsKeygetput和移除操作提供了有保证的log(n)时间成本。

Bag存储集合中的每个对象以及出现次数。

答案 1 :(得分:0)

也许是

Guava's TreeMultiset?与Apache Commons不同,TreeMultiset and the other Multisets与泛型相处并且正确遵守Collection合同,这使得使用起来更友好。

(披露:我向Guava捐款。)