2011-09-11 35 views
-1

我有一個名爲jobTypeJava的幫助:PriorityQueue中

package pcs_assignment_2; 

public class JobType 
{ 
    private int ID; 
    private double aTime; 
    private double sTime; 

    public JobType(int ID, double aTime, double sTime) 
    { 
     this.ID = ID; 
     this.aTime = aTime; 
     this.sTime = sTime; 
    } 

    public int getID() { 
     return ID; 
    } 

    public void setID(int ID) { 
     this.ID = ID; 
    } 

    public double getaTime() { 
     return aTime; 
    } 

    public void setaTime(double aTime) { 
     this.aTime = aTime; 
    } 

    public double getsTime() { 
     return sTime; 
    } 

    public void setsTime(double sTime) { 
     this.sTime = sTime; 
    } 

    public String toString() { 
     return "JobType{" + "ID=" + ID + "aTime=" + aTime + "sTime=" + sTime + '}'; 
    } 

} 

類現在我想已經是類型JobType這種種STIME的基礎上,隊列的PriorityQue。可能嗎?

+2

[PriorityQueue](http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html)的JavaDocs的哪一部分是您有理解問題? –

+0

使用比較器.... – John

+0

可能重複[Java:我如何使用PriorityQueue?](http://stackoverflow.com/questions/683041/java-how-do-i-use-a-priorityqueue) - 具有使用PriorityQueue和比較器的具體示例 –

回答

3

需要編寫自定義比較器,請參閱下面的代碼。 這裏10個隊列的初始容量。

new PriorityQueue<JobType>(10, new Comparator<JobType>() { 

    @Override 
    public int compare(JobType o1, JobType o2) { 
      return Double.compare(o1.sTime,o2.sTime); 
    } 
    }); 
+0

當對象被添加時,que的容量是否會不斷增加? – John

+0

是的,會的。它只是一個初始容量,沒有隻有比較器的構造函數。 –

+2

爲每次比較創建一個「雙」是昂貴的。另一種方法是使用'Double.compare(o1.sTime,o2.sTime)' –

-1

你可以有一個簡單的列表,其中所有的作業都駐留在那裏,然後在你想取出一個列表之前,使用sTime上的比較函數對列表進行排序。

0

除了比較器選項,我相信只要讓類實現Comparable接口就可以實現相同的行爲;只有當這個順序模仿你的對象的自然排序時才這樣做。