社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Queue
是一个先进先出(FIFO)的队列,而PriorityQueue特别的地方在于他的出队顺序与元素的优先级有关,对PriorityQueue调用方法remove()/poll(),返回的总是优先级最高的元素。
因此,放入PriorityQueue的元素必须实现接口comparator,PriorityQueue会根据元素的排序顺序决定出队的优先级。
举例说明:对nums2数组降序排列
PriorityQueue<int[]> maxpq = new PriorityQueue<>(
new Comparator<int[]>() {
public int compare(int[] pair1, int[] pair2) {
return pair2[1] - pair1[1];
}
});
for(int i=0;i<n;i++){
maxpq.add(new int[]{i,nums2[i]});
}
或者是下面这种自定义方式也可以
PriorityQueue<int[]> maxpq=new PriorityQueue<>(
(int[] pair1,int[] pair2)->{
return pair2[1]-pair1[1];//根据第一维的元素降序排列
}
);
for(int i=0;i<n;i++){
maxpq.offer(new int[]{i,nums2[i]});
}
maxpq如下:
3 | 1 | 2 | 0 |
11 | 10 | 4 | 1 |
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!