要想實作一個二維數組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]);
}
}
}