Pertanyaan Jenis konflik PriorityQueue Comparator dengan Arrays.sort ()


Komparator saya saat ini diketik JobSet. Saya tidak yakin mengapa itu terjadi <capture - Saya belum pernah melihat itu sebelumnya. Dapatkah seseorang menjelaskan apa yang terjadi di sini?

Komparator ...

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

Antrian...

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


4
2018-05-17 21:56


asal


Jawaban:


queue.toArray() mengembalikan a Object[], yang Anda berikan Comparator tidak bisa menangani.

Anda perlu menggunakan alternatif toArray(), yang mengambil larik jenis yang diharapkan:

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

8
2018-05-17 22:00