我知道PriorityQueue在add()使用对象的compareTo()方法对元素进行排序时会自动对元素进行排序。假设我想在某个时候更改队列中元素的优先级。PriorityQueue考虑到元素的优先级发生了变化,我如何明确地命令再次对自身进行排序?
删除对象,更改其优先级,然后将其重新添加到队列中。
我的直觉是,数据结构通常不会监视对象的内部状态,并且它需要 add() 或 remove() 操作来触发比较器的重新调用。对 Collections.sort() 的调用也可以,但您必须将队列转换为列表,然后再转换回队列。如果您一次更改很多优先级,这可能更有意义。
更好的是,您可以更新 n 个优先级,然后添加和删除最后一个。
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |