我有一個比較器,在給定列反向後對數組進行排序。我希望這個比較器不適用於int [],它也可以用於其他數字類型。我該怎麼做?如何將Reverse Comparator重寫爲泛型?
比較器的代碼是在這裏:
public class ReverseComparator implements Comparator<int[]> {
int col;
public ReverseComparator(int col) {
this.col = col;
}
@Override
public int compare(int[] a, int[] b) {
if (a[col - 1] > b[col - 1]) {
return -1;
} else if (a[col - 1] < b[col - 1]) {
return 1;
} else {
return 0;
}
}
}
我改變它,但它永遠是錯的,我不知道......
public class ReverseComparator implements Comparator<T extends Number[]> {
int col;
public ReverseComparator(int col) {
this.col = col;
}
@Override
public int compare(T[] a, T[] b) {
if (a[col - 1] > b[col - 1]) {
return -1;
} else if (a[col - 1] < b[col - 1]) {
return 1;
} else {
return 0;
}
}
}
'它總是錯'意思是排序不正確? – Kick
他想分類任何東西的數組。你不能擴展Number [],這就是爲什麼它是錯誤的 – webuster
@Youngistan不,第一個比較器是好的,它只是爲int []工作。第二個比較器不起作用。 – xirururu