如何使用新的比较器和NO指定的初始容量创建PriorityQueue?

lkk*_*ing 9 java priority-queue

在Java中,我不知道如何PriorityQueue使用新的比较器创建一个新的比较但没有给出队列长度?我该如何创建它?

我知道我可以写:

Queue<Node> theQueue = new PriorityQueue<Node>(15,new Comparator<Node>();
Run Code Online (Sandbox Code Playgroud)

但是我希望队列可以工作LinkedList,我的意思是它的长度不固定,我怎么能声明呢?

Mat*_*all 9

没有这样的构造函数.根据JavaDocs,默认容量为11,因此您可以为no-arg PriorityQueue构造函数指定类似行为:

Queue<Node> theQueue = new PriorityQueue<Node>(11,new Comparator<Node>());
Run Code Online (Sandbox Code Playgroud)

是的,如果需要,队列将会增长.

优先级队列是无限制的,但具有内部容量,用于控制用于存储队列中元素的数组的大小.它始终至少与队列大小一样大.当元素添加到优先级队列时,其容量会自动增加.未指定增长政策的详细信息.


Jor*_*ble 5

从 Java 版本 8 开始,有一个新的构造函数可以满足您的要求:PriorityQueue(Comparator Comparator)

所以你会得到:

Queue<Node> theQueue = new PriorityQueue<>(new Comparator<Node>());
Run Code Online (Sandbox Code Playgroud)