你必须删除并重新插入,因为队列的工作原理是在插入新元素时将它们放置在适当的位置。这比每次退出队列时查找优先级最高的元素的替代方法要快得多。缺点是插入元素后无法更改优先级。TreeMap具有相同的限制(与HashMap一样,在插入后其元素的哈希码更改时也会中断)。
如果要编写包装器,可以将比较代码从入队移到出队。你不再需要在入队时间进行排序(因为如果允许更改,它创建的顺序将始终不可靠)。
但这会导致性能变差,并且如果你更改任何优先级,都希望在队列上进行同步。由于在更新优先级时需要添加同步代码,因此你也可能只需要出队和入队(在两种情况下都需要引用队列)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)