我有一个比较器类N比较器,它比较2个Node对象并返回1、-1或0。
我初始化了一个初始化容量为100的PriorityQueue和那个N比较器。
NComparator nc = new NComparator();
PriorityQueue<Node> pq = new PriorityQueue<Node>(100, nc);
我有大约25个Node对象(可以与N比较器进行比较),我将它们全部添加到PriorityQueue对象中:
pq.add(new Node("A", 3));
pq.add(new Node("G", 1));
pq.add(new Node("B", 10));
.... etc
如何通过比较器返回的优先级(仅比较节点的成对组合)来排列PriorityQueue中的这些节点对象?具体来说,我希望能够访问这个PriorityQueue中优先级最低的两个节点。如何做到这一点?
PriorityQueue
API仅支持获取优先级最低的单个节点,但您可以将其删除,然后再次查询以获取下一个最低的元素。
如果你确定你的N比较器正确地排列了节点元素,并且最小优先级在队列的最前面,那么你只需要做两次:pq.投票()
参见PriorityQueueAPI
示例:
Node firstLowerNode = pq.poll();
Node secondLowerNode = pq.poll();