PriorityQueue Comparator类型与Arrays.sort()冲突

时间:2013-05-17 21:56:47

标签: java

我的比较器目前已输入JobSet。我不确定它为什么<capture - 我以前从未见过它。有人可以了解这里发生的事情吗?

比较器......

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 个答案:

答案 0 :(得分:8)

queue.toArray()会返回Object[],您提供的Comparator无法处理。

您需要使用备用toArray(),它采用预期类型的​​数组:

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