Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PriorityQueue,我错过了什么?_Java_Priority Queue - Fatal编程技术网

Java PriorityQueue,我错过了什么?

Java PriorityQueue,我错过了什么?,java,priority-queue,Java,Priority Queue,我有一个comparator类NComparator,它比较2个节点对象并返回1、-1或0 我初始化了一个PriorityQueue,初始容量为100,并使用该NComparator NComparator nc = new NComparator(); PriorityQueue<Node> pq = new PriorityQueue<Node>(100, nc); 如何根据比较器返回的优先级(仅比较节点的成对组合)在PriorityQueue中排列

我有一个comparator类NComparator,它比较2个节点对象并返回1、-1或0

我初始化了一个PriorityQueue,初始容量为100,并使用该NComparator

    NComparator nc = new NComparator();
    PriorityQueue<Node> pq = new PriorityQueue<Node>(100, nc);

如何根据比较器返回的优先级(仅比较节点的成对组合)在PriorityQueue中排列这些节点对象?具体来说,我希望能够访问此PriorityQueue中优先级最低的两个节点。如何才能做到这一点?

PriorityQueueAPI只支持获取优先级最低的单个节点,但您可以删除该节点,然后再次查询以获取下一个最低的元素。

如果您确定NComparator正确排列了节点元素,并且优先级最低的节点位于队列的头部,然后只需执行两次:
pq.poll()

例如:

  Node firstLowerNode = pq.poll();
  Node secondLowerNode = pq.poll();

这会有帮助的,谢谢,我明白了。我也没有意识到,当我执行pq.add时,PriorityQueue会自动添加它们,因此它们总是按顺序保留。因此,在元素上删除将删除其最低优先级。
  Node firstLowerNode = pq.poll();
  Node secondLowerNode = pq.poll();