【发布时间】:2014-12-03 19:44:07
【问题描述】:
我按照here 中的示例创建PriorityQueue。它工作得很好,我能够优先考虑我的对象。但我的问题是我的理解,Queue 是先进先出。所以假设我创建一个PriorityQueue 并按优先级对其进行排序。我首先将一个对象添加到优先级=Low 和值=c 的队列中。然后我将另一个对象添加到我的PriorityQueue,优先级设置为高,值设置为 b。最后我想向PriorityQueue 添加另一个具有高优先级但值=a 的对象。然后我用poll() 打印出我得到的这三个对象
priority: High, value: a
priority: High, value: b
priority: Low, value: c
优先级排序正确,但我希望具有相同优先级的两个对象遵循先进先出规则。因为 b 先加在 a 之前,所以预期的结果应该是
priority: High, value: b
priority: High, value: a
priority: Low, value: c
这可行吗?我的比较器如下
private static Comparator<Request> comparator = new Comparator<Request>(){
@Override
public int compare(Request r1, Request r2) {
return (int) (r1.priority - r2.priority);
}
};
谢谢!
【问题讨论】:
标签: java priority-queue