PriorityQueue是基于优先级堆的极大优先级队列
在PriorityQueue提供的构造方法中,可以使用自定义的排序方法:
1 PriorityQueue<ListNode> pq = new PriorityQueue<ListNode>(lists.size(),new Comparator<ListNode>(){ 2 3 @Override 4 public int compare(ListNode o1, ListNode o2) { 5 return o1.val-o2.val; 6 } 7 8 });
也可以使用元素自带的Comparable排序
因此,PriorityQueue要求在默认排序的时候,需要元素对象拥有Comparable功能。
但是,若对象在没有Comparable功能的时候,PriorityQueue实现了自己的Comparator,那么理所当然可以正确运行:
1 PriorityQueue<webs> pq = new PriorityQueue<webs>(3,new Comparator<webs>(){ 2 3 @Override 4 public int compare(webs o1, webs o2) { 5 return o1.n - o2.n; 6 } 7 });
PriorityQueue提供的方法
peek():返回队头的元素,但不删除。
poll():返回并删除队首元素。
add():将元素加入队列
offer():同上