gpt4 book ai didi

java - 在 Java 中从 priorityQueue 创建有序数组的更好方法

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:50 25 4
gpt4 key购买 nike

我当然可以做到以下几点:

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

但是这种方法清空了我想保留的队列。我知道我可以使用那个比较器进行排序(当然当它不像上面那样简单时)来获得这个数组,但我必须先创建一个数组,然后将元素从队列复制到数组,然后对数组进行排序.

有没有更好的方法?感谢您的帮助!

最佳答案

来自 PriorityQueue 的 Javadocs:

This class and its iterator implement all of the optional methods of the Collection and Iterator interfaces. The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular order. If you need ordered traversal, consider using Arrays.sort(pq.toArray()).

创建数组,然后对其进行排序。这是规定的方式。

关于java - 在 Java 中从 priorityQueue 创建有序数组的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com