2013-05-17 32 views
4

我的比較器當前輸入爲JobSet。我不確定它爲什麼有<capture - 我以前從未見過。有人能對這裏發生的事情有所瞭解嗎?PriorityQueue比較器類型與Arrays.sort()的衝突

比較...

public class JobSetComparator implements Comparator<JobSet> { 
    @Override 
    public int compare(JobSet o1, JobSet o2) { 
     return Integer.compare(o1.getHighestPriority().getValue(), o2.getHighestPriority().getValue()); 
    } 
} 

隊列...

protected JobSetQueue queue = new JobSetQueue(0, new JobSetComparator()); 

public JobSetQueue getQueue() { 
    return queue; 
} 

public JobSet[] getPrioritizedQueue() { 
    return Arrays.sort(queue.toArray(), queue.comparator()); 
} 

enter image description here

+1

所有'Arrays.sort'方法返回'void',所以你不能'return'什麼返回,因爲它不返回任何東西。 – rgettman

+0

@EJP - 請發表一些東西作爲答案,我可以給你信用...我對如何使用PriorityQueue感到困惑。 – Webnet

回答

8

queue.toArray()返回Object[],你的前提Comparator無法處理。

您將需要使用備用toArray(),這需要預期的類型的數組:

JobSet[] queueArray = queue.toArray(new JobSet[]{}); 
Arrays.sort(queueArray, queue.comparator()); 
return queueArray;