要想实现一个二维数组arr[n][2]的排序,先按arr[i][0]的升序,在升序的基础上,再按arr[i][1]的降序,怎么实现呢?
代码如下:
public class Solution {
//先定义一个比较器
static Comparator<int[]> comparator = new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
//先按升序排列,再按数字的降序排列
if (o1[1] != o2[1])
return o1[1] - o2[1];
else
return o2[0] - o1[0];
}
};
public void Test_PriorityQueue(int[][] arr) {}
//优先队列
PriorityQueue<int[]> heap = new PriorityQueue<>(comparator);
//存入优先队列,它会自动的按照我们定义的规则去排序
for (int i=0; i<arr.length; i++){
int[] nums = {arr[0],arr[1]};
heap.add(nums);
}
//输出结果
while(!heap.isEmpty()){
int[] val = heap.poll();
System.out.println(val[0] + " " + val[1]);
}
}
}