当Java PriorityQueue的元素更改优先级时更新

当Java PriorityQueue的元素更改优先级时更新,第1张

当Java PriorityQueue的元素更改优先级时更新

你必须删除并重新插入,因为队列的工作原理是在插入新元素时将它们放置在适当的位置。这比每次退出队列时查找优先级最高的元素的替代方法要快得多。缺点是插入元素后无法更改优先级。TreeMap具有相同的限制(与HashMap一样,在插入后其元素的哈希码更改时也会中断)。

如果要编写包装器,可以将比较代码从入队移到出队。你不再需要在入队时间进行排序(因为如果允许更改,它创建的顺序将始终不可靠)。

但这会导致性能变差,并且如果你更改任何优先级,都希望在队列上进行同步。由于在更新优先级时需要添加同步代码,因此你也可能只需要出队和入队(在两种情况下都需要引用队列)。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5008977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存