PriorityQueue是否允许重新排序队列中已有的元素?

And*_*yld 1 java priority-queue

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

据我了解,poll()总是返回具有最低值的队列对象(由比较器确定).如果我可以降低一个项的值已经在队列中(例如,如果这个值由确定int在所述对象和我降低int值在一些其它功能),将它首先通过返回poll(),或者是其允许分选poll()至在插入时完成此操作(例如,通过将新队列元素向下列入列表直到它们达到"自然"深度)?

如果在a上完成PriorityBlockingQueue,是否会导致并发问题?

nos*_*nos 6

如果更改确定其顺序的属性,则Java中的任何集合都不会自动重新排序元素.对于依赖于.hashCode(),. equals()或某个比较器的集合,当对象驻留在集合中时,不允许更改对象,以便hashcode/equals或比较器产生不同的值.

如果要在PriorityQueue中更改其优先级,则必须删除,更改,重新插入对象.