0

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

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

PriorityQueue 是一种方法,但它的 remove() 方法需要 O(n)。如果可能的话,我该如何调整这个?

4

2 回答 2

2

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

ABag将每个对象连同出现次数一起存储在集合中。

于 2012-10-18T22:09:51.550 回答
0

番石榴的 TreeMultiset,也许?与 Apache Commons 不同,TreeMultiset其他Multiset和泛型相处融洽并正确遵守Collection约定,这使得它使用起来更加友好一些。

(披露:我为 Guava 做出了贡献。)

于 2012-10-19T00:28:06.793 回答