维护 Java PriorityQueue 中的对象优先级
将 PriorityQueue 与 Comparator 结合使用可以根据指定条件对对象进行高效排序。但是,会出现影响优先级的对象变量在初始插入后发生变化的情况。虽然删除和重新插入对象是一种常见的解决方案,但有没有更优化的方法?
不幸的是,限制在于 PriorityQueue 的设计,它通过立即将新元素放置在适当的位置来优先考虑快速插入。这使得无法在插入后修改优先级而无需删除并重新插入对象。类似的限制也适用于 TreeMap 和 HashMap。
或者,可以通过将比较代码从入队操作转移到出队操作来实现包装类。这消除了在排队期间排序的需要,因为生成的顺序随着优先级的变化而变得不可靠。然而,这种方法会带来性能开销,并且需要同步以防止潜在的数据完整性问题。
总而言之,建议的解决方案仍然是删除并重新插入对象以保持准确性。修改对象属性以随后影响其在队列中的优先级的任务在任何情况下都需要同步访问队列。
以上是## 插入后能否保持 Java PriorityQueue 中的对象优先级?的详细内容。更多信息请关注PHP中文网其他相关文章!