Java 优先级队列构造函数中的参数
最近,我开始在java中使用优先级队列,我已经发现了一些我似乎不理解的东西。我使用了comparator类以我的方式对优先级队列进行排序 下面是我做的一个简单的程序:-Java 优先级队列构造函数中的参数,java,priority-queue,comparator,Java,Priority Queue,Comparator,最近,我开始在java中使用优先级队列,我已经发现了一些我似乎不理解的东西。我使用了comparator类以我的方式对优先级队列进行排序 下面是我做的一个简单的程序:- package main; import java.util.Comparator; import java.util.PriorityQueue; class PQ implements Comparator<Integer> { public int compare(Integer o1, Intege
package main;
import java.util.Comparator;
import java.util.PriorityQueue;
class PQ implements Comparator<Integer> {
public int compare(Integer o1, Integer o2) { // sort in the descending order
return o2 - o1;
}
}
public class Main {
public static void main(String[] args) {
int[] list = { 1, 5, 6, 9, 10, 3, 5, 2, 13, 15, 17, 19, 25, 1, 0 };
PQ pqs = new PQ();
PriorityQueue<Integer> pq1 = new PriorityQueue<Integer>(10, pqs);
// what does this "10" parameter does?
for (int x : list) {
pq1.offer(x); // put values in to the queue
}
for (int x : list) {
System.out.println(pq1.poll()); // pops out from the queue.
}
}
}
packagemain;
导入java.util.Comparator;
导入java.util.PriorityQueue;
类PQ实现了比较器{
公共整数比较(整数o1,整数o2){//按降序排序
返回o2-o1;
}
}
公共班机{
公共静态void main(字符串[]args){
int[]list={1,5,6,9,10,3,5,2,13,15,17,19,25,1,0};
PQ pqs=新PQ();
PriorityQueue pq1=新的PriorityQueue(10,pqs);
//这个“10”参数的作用是什么?
for(int x:list){
pq1.offer(x);//将值放入队列
}
for(int x:list){
System.out.println(pq1.poll());//从队列中弹出。
}
}
}
我的问题是整数参数“10”在优先级队列构造函数中的含义是什么?(我正在传递它,但我不知道它的作用)
我搜索了一下互联网,发现它是用来指定初始容量的,但仍然无法清楚地理解它
有人能解释一下它是干什么的吗
谢谢你抽出时间 它是“优先级队列”的初始容量。 当你有这样的疑问时,你应该参考 它用于您事先知道需要多少空间(至少在开始时)的情况,以便实例化对象可以分配足够的内存来存储该数量的元素,而无需浪费时间分配较小的内存(以节省空间)然后根据需要花费一些时间来分配新内存。A由
对象[]
支持。默认情况下,此数组的大小为11
,但每当您添加的元素超过其容量时,必须调整其大小(一种O(n)
操作)。您通过int构造函数参数指定此数组的初始大小,可能是为了避免此类调整大小操作:
147 public PriorityQueue(int initialCapacity,
148 Comparator<? super E> comparator) {
149 // Note: This restriction of at least one is not actually needed,
150 // but continues for 1.5 compatibility
151 if (initialCapacity < 1)
152 throw new IllegalArgumentException();
153 this.queue = new Object[initialCapacity]; // <--
154 this.comparator = comparator;
155 }
147公共优先队列(int initialCapacity,
148比较器