Лучший способ создать упорядоченный массив из priorityQueue в Java

Я, конечно, могу сделать следующее:

        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();
        }

Но этот подход опустошает очередь, которую я хочу сохранить. Я знаю, что мог бы отсортировать, используя этот компаратор (конечно, когда это не так тривиально, как выше), чтобы получить этот массив, но мне придется сначала создать массив, затем скопировать элементы из очереди в массив, затем отсортировать массив.

Есть ли какой-нибудь лучший подход? Спасибо за помощь!

5
задан Qiang Li 27 December 2011 в 21:08
поделиться