Я, конечно, могу сделать следующее:
PriorityQueue<Integer> q = new PriorityQueue<Integer>(100, new Comparator<Integer>() {
public int compare(Integer x, Integer y) {
return Integer.valueOf(x).compareTo(y);
}
});
...//add some elements to q
int[] arr = new int[q.size()];
int i = 0;
while (q.size() != 0) {
arr[i++] = q.remove();
}
Но этот подход опустошает очередь, которую я хочу сохранить. Я знаю, что мог бы отсортировать, используя этот компаратор (конечно, когда это не так тривиально, как выше), чтобы получить этот массив, но мне придется сначала создать массив, затем скопировать элементы из очереди в массив, затем отсортировать массив.
Есть ли какой-нибудь лучший подход? Спасибо за помощь!