【发布时间】:2020-11-10 17:45:34
【问题描述】:
我在 Java 中使用 PriorityQueue。
我有一个具有这种结构的对象:
public class CostObject {
String value;
double cost;
public CostObject(String val, double cst) {
value = val;
cost = cst;
}
}
优先级是从最便宜到最贵的成本:
PriorityQueue<CostObject> queue = new PriorityQueue<>(1, new Comparator<CostObject> () {
@Override
public int compare(CostObject co1, CostObject co2) {
return (co1.cost > co2.cost) ? 1 : -1;
}
});
我使用 add 将对象包含在队列中。
CostObject co = new CostObject("test", cost);
queue.add(co);
它适用于队列中的每个元素,但我添加的最后一个元素始终位于底部位置。
我做错了什么?
【问题讨论】:
-
我建议也看看这个关于 PriorityQueue 的迭代器 stackoverflow.com/questions/5695017/… 的答案。如果您使用它来打印结果(或使用 PriorityQueue.toString),它们将不会按排序顺序。
标签: java priority-queue