我有一个PriorityQueue
,其元素具有优先级。现在我想再次添加具有不同优先级的相同元素,并仅保留具有更高优先级的元素。我想过检查新元素是否已经存在,然后决定是保留旧元素还是替换,但我找不到一种方法来将我的新元素与PriorityQueue
中的任意元素进行比较。 / p>
答案 0 :(得分:2)
PriorityQueue
并不意味着访问其中的任意元素,它旨在允许单独快速访问头部。如果您需要经常执行此操作,则java.util.TreeSet
可能是更好的数据结构。
但是,您可以通过迭代PriorityQueue
[使用Iterator
]来访问任何元素,并在找到匹配时进行中断。在O(n)
获取任意元素时,你无法获得比PriorityQueue
更好的性能,因为它不是为了实现它而设计的。