gpt4 book ai didi

java - PriorityQueue 是否允许对队列中已有的元素进行重新排序?

转载 作者:行者123 更新时间:2023-11-29 10:20:02 27 4
gpt4 key购买 nike

我想增加或降低 PriorityQueue 中项目的优先级:例如,我可能正在下载一长串图像,突然希望第 30 个具有最高优先级。

据我了解,poll() 总是返回具有最低值(由比较器确定)的队列对象。如果我可以降低队列中已有项目的值(例如,如果此值由对象中的 int 确定,并且我减少了其他函数中的 int 值),它将首先由 poll() 返回,还是允许 poll() 在插入时完成此操作的排序(例如,通过向下冒泡新队列元素一个列表,直到它们达到它们的“自然”深度)?

如果这是在 PriorityBlockingQueue 上完成的,会不会导致并发问题?

最佳答案

如果您更改确定元素顺序的属性,Java 中的任何集合都不会自动重新排序元素。对于依赖于 .hashCode() 、 .equals() 或某些比较器的集合,当对象驻留在集合中时,您不得更改对象,以便哈希码/等于或比较器会产生不同的值。

如果您想在 PriorityQueue 中更改对象的优先级,则必须删除、更改、重新插入该对象。

关于java - PriorityQueue 是否允许对队列中已有的元素进行重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067924/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com