簡體   English   中英

Java優先級隊列排序

[英]Java Priority Queue Sorting

我有一個名為IncomingPriorityQueue ,其中包含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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM