我想保持顺序并允许重复。我应该为自己建造一个吗?或者有什么方法可以调整 Comparator (我认为 remove() 和 insert() 使用相同)?谢谢。
我希望 remove() 在 O(log n) 中,并且 add() 也在 O(log n) 中。
PriorityQueue 是一种方法,但它的 remove() 方法需要 O(n)。如果可能的话,我该如何调整这个?
我想保持顺序并允许重复。我应该为自己建造一个吗?或者有什么方法可以调整 Comparator (我认为 remove() 和 insert() 使用相同)?谢谢。
我希望 remove() 在 O(log n) 中,并且 add() 也在 O(log n) 中。
PriorityQueue 是一种方法,但它的 remove() 方法需要 O(n)。如果可能的话,我该如何调整这个?
你能看到TreeBag
Apache Commons-Collections吗?这使用 a来提供数据存储,它为、和remove 操作TreeMap
提供有保证的 log(n) 时间成本。containsKey
get
put
ABag
将每个对象连同出现次数一起存储在集合中。
番石榴的 TreeMultiset
,也许?与 Apache Commons 不同,TreeMultiset
其他Multiset
的和泛型相处融洽并正确遵守Collection
约定,这使得它使用起来更加友好一些。
(披露:我为 Guava 做出了贡献。)