如何比较Java PriorityQueue中的任意元素?

时间:2011-08-28 08:25:48

标签: java compare priority-queue

我有一个PriorityQueue,其元素具有优先级。现在我想再次添加具有不同优先级的相同元素,并仅保留具有更高优先级的元素。我想过检查新元素是否已经存在,然后决定是保留旧元素还是替换,但我找不到一种方法来将我的新元素与PriorityQueue中的任意元素进行比较。 / p>

1 个答案:

答案 0 :(得分:2)

PriorityQueue并不意味着访问其中的任意元素,它旨在允许单独快速访问头部。如果您需要经常执行此操作,则java.util.TreeSet可能是更好的数据结构。

但是,您可以通过迭代PriorityQueue [使用Iterator]来访问任何元素,并在找到匹配时进行中断。在O(n)获取任意元素时,你无法获得比PriorityQueue更好的性能,因为它不是为了实现它而设计的。