赞
踩
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 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。