我正在为Android实现A * -pathfinding算法的一个版本。我使用PriorityQueue来管理我的openList
。
在某些情况下,我更新其中一个队列条目的优先级 - 属性。如果我调用remove()
,要在更新的队列上获取 head -Object,期望获得更新的条目,我会得到错误的结果。似乎没有正确确定更新队列的优先级。
我找到的唯一解决方案是删除特定条目,更新值并将其重新放入:
openList.remove(objectToBeUpdated);
objectToBeUpdated.setPriorityAttribute(newValue);
openList.add(objectToBeUpdated);
在添加对象时,队列确实优先考虑,而不是通过轮询/删除它们?
除了删除和添加它之外还有其他方法吗?我认为这是一个肮脏的解决方案。或者这只是PriorityQueue的行为,我必须处理它?</ p>