[英]Java Priority Queue Sorting
我有一個名為Incoming
的PriorityQueue
,其中包含Vehicle
類型的對象。
您可以在所有Vehicles
上調用getFuelLevel()
方法。
我要做的是對Incoming
進行排序,以使fuel
最少的Vehicles
具有更高的優先級,並位於隊列的最前面。
我假設我必須在這里使用Comparator
,但不知道如何執行。
當對自己的類使用PriorityQueue
時,我總是做的一件事是使該類實現Comparable<Class>
。 這樣,無需實現Comparator,您只需實現類中的int compareTo(Class o)
方法即可,該方法返回“負整數,零或正整數,因為此對象小於,等於”。 ,或大於指定的對象。”
在你的情況,這將返回1,如果該Vehicles
具有比更少的燃料Vehicles
inputed,0如果兩者具有相同的,和-1,如果Vehicles
有更多的燃料比一個inputed。
http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
PriorityQueue
類具有一個將Comparator
作為參數的構造函數。 您可以通過提供特定的Comparator
來構造PriorityQueue
PriorityQueue<Vehicle> queue = new PriorityQueue<Vehicle>(initialCapacity, new Comparator<Vehicle> {
int compare(Vehicle a, Vehicle b) {
return a.getFuelLevel() - b.getFuelLevel();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.