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

发布于 2024-12-01 19:00:44 字数 168 浏览 3 评论 0原文

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

I have a PriorityQueue that has an element with a priority. Now I want to add the same element again with a different priority and keep only the one with higher priority. I thought of checking the new element against the already present one and then deciding whether to keep the old one or replace, but I can't find a way to compare my new element against an arbitrary element from the PriorityQueue.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷雨优美回忆 2024-12-08 19:00:44

PriorityQueue 并不是要访问其中的任意元素,它的设计目的是允许快速访问单独的头部。如果您需要频繁执行此操作,java.util.TreeSet 可能是更好的数据结构。

但是,您可以通过迭代 PriorityQueue [使用 Iterator] 并在找到匹配项时中断来访问任何元素。在任何情况下,对于 PriorityQueue 来说,获取任意元素都无法获得比 O(n) 更好的性能,因为它的设计初衷并不是这样做。

a PriorityQueue was not meant to access an arbitrary element in it, it is designed to allow fast access to the head alone. If you need to do this operation frequently, probably a java.util.TreeSet will be a better data structure.

However, you can access any element by iterating PriorityQueue [using an Iterator] and breaking when you find your match. You cannot get performance better then O(n) for getting an arbitrary element in any case for a PriorityQueue, because it was not designed to do it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文