Java 优先级队列构造函数中的参数

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

最近,我开始在java中使用优先级队列,我已经发现了一些我似乎不理解的东西。我使用了comparator类以我的方式对优先级队列进行排序

下面是我做的一个简单的程序:-

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比较器