2011-09-11 4 views
-1

나는 지금 내가 무엇을하고 싶어해야하는 STIME에 기초하여 큐를 정렬 유형 JOBTYPE의 PriorityQue입니다 자바 도움말 : 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

라는 클래스가 있습니다. 가능한가?

+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) 복제본을 사용할 수 있습니다. - Comparator로 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

개체가 추가 될 때마다 큐의 용량이 계속 증가할까요 ?? – John

+0

예, 가능합니다. 그것의 다만 처음 수용량, 단지 비교자를위한 아무 생성자도 없다. –

+2

모든 비교에 대해 'Double'을 만드는 것은 비용이 많이 듭니다. 대안은'Double.compare (o1.sTime, o2.sTime)'을 사용하는 것입니다. –

-1

모든 작업이있는 간단한 목록을 가질 수 있으며, 그 중 하나를 선택하기 전에 sTime의 비교 함수를 사용하여 목록을 정렬하십시오.

0

비교기 옵션 외에도, 클래스가 Comparable 인터페이스를 구현하도록함으로써 동일한 동작을 얻을 수 있다고 믿습니다. 이 순서가 객체의 자연 순서를 모방 한 경우에만 그렇게하십시오.