我有PriorityQueue
名为Incoming
,其中包含Vehicle
类型的对象。
您可以在所有getFuelLevel()
上调用方法Vehicles
。
我想要做的是对Incoming
进行排序,以便Vehicles
fuel
Comparator
的优先级更高,并放在队列的前面。
我假设我必须在这里使用{{1}},但不知道该怎么做。
答案 0 :(得分:1)
在我自己的类中使用PriorityQueue
时,我总是做的一件事就是使该类实现Comparable<Class>
。有了这个,你需要实现的只是类中的int compareTo(Class o)
方法而不是需要实现Comparator,它返回“负整数,零或正整数,因为这个对象小于,等于,或者大于指定的对象。“
在你的情况下,如果Vehicles
的燃料少于输入的Vehicles
,则返回1,如果两者相同,则返回0;如果Vehicles
有更多,则返回-1燃料比输入的燃料好。
http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
答案 1 :(得分:1)
PriorityQueue
类有一个构造函数,它以Comparator
为参数。您可以通过提供特定的PriorityQueue
Comparator
PriorityQueue<Vehicle> queue = new PriorityQueue<Vehicle>(initialCapacity, new Comparator<Vehicle> {
int compare(Vehicle a, Vehicle b) {
return a.getFuelLevel() - b.getFuelLevel();
}
});