提问人:curiousengineer 提问时间:10/18/2023 最后编辑:Chaosfirecuriousengineer 更新时间:10/18/2023 访问量:57
在 Java 中修改 PriorityQueue 中的项目
Modifying an item in a PriorityQueue in Java
问:
假设我有一个自定义类,如下所示
class Emp {
String name;
Integer id;
}
我决定在 java 中使用 PriorityQueue 来插入 Emp 的元素,并在类的字段上提供自定义比较器。id
max-heap
我理解并将保持堆属性完好无损。现在我的问题是,如果我想修改 的实例的值,我该怎么做?即使我维护一个 HashMap 来查找我想要随时修改的对象,即使我这样做,它也会破坏堆属性。不是吗?pop
offer
id
Emp
实现这一目标的最佳方法是什么?我也不能从堆中随机删除元素并重新插入?
我应该只用一个吗?TreeMap
答: 暂无答案
上一个:Python 中的堆顺序
下一个:输出未出现在多级队列算法中
评论
remove(Object o)
从堆中删除元素,但时间复杂度是线性的,O(n)。所以,不是很好。IndexedPriorityQueue