我正在使用优先级队列来排序和使用大量自定义对象.物体具有"重量",这是它们的自然顺序.但是,插入优先级队列的不同对象可能具有相同的"权重".在这种情况下,我希望优先级队列按照它们放入队列的顺序对它们进行排序.
例如,如果我按顺序添加CustomObjects A,B,C,D,所有具有相同"权重"的优先级队列也应该按顺序返回它们 - 即使我轮询一个或多个对象在加入其他人之前.
这是我的自定义对象的CompareTo:
public int compareTo(CustomObject o) {
int thisWeight = this.weight;
int thatWeight = o.weight;
if(thisWeight < thatWeight){
return -1;
}
else{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我认为这将保持初始顺序,但事实并非如此.当我输入重量为1的A,B,C时会发生这种情况; 民意调查A; 并且添加D,E也使用权重1.不知何故,D和E在B之后排序,但在C之前.
我知道PriorityQueues的Iterator没有返回正确的顺序,所以我的查看顺序有限 - 但是我可以看到元素离开队列的顺序,它显然不遵循路径我希望它.
建议?