我想保留顺序并允许重复。我应该为自己建一个吗?或者有什么方法可以调整Comparator(我认为remove()和insert()使用相同的)?感谢。
我希望remove()在O(log n)中,并且add()也是O(log n)。
PriorityQueue是一种方法,但其remove()方法需要O(n)。如果可能的话,我该怎么调整呢?
答案 0 :(得分:2)
您能看到TreeBag
的Apache Commons-Collections吗?这使用TreeMap
来提供数据存储,这为containsKey
,get
,put
和移除操作提供了有保证的log(n)时间成本。
Bag
存储集合中的每个对象以及出现次数。
答案 1 :(得分:0)
Guava's TreeMultiset
?与Apache Commons不同,TreeMultiset
and the other Multiset
s与泛型相处并且正确遵守Collection
合同,这使得使用起来更友好。
(披露:我向Guava捐款。)