gpt4 book ai didi

java - 如何将反向比较器重写为通用类型?

转载 作者:行者123 更新时间:2023-11-29 06:35:12 26 4
gpt4 key购买 nike

我有一个比较器,它在给定的列反转后对数组进行排序。我希望这个比较器不仅仅适用于 int[],它也适用于其他数字类型。我该怎么做?

比较器的代码在这里:

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;
}

}

}

最佳答案

如果你必须制作 ReverseComparator泛型,那么你必须用它来声明类型参数。并给它下限:

public class ReverseComparator<T extends Number & Comparable<T>> implements Comparator<T[]> {
@Override
public int compare(T[] a, T[] b) {
// Write your comparison logic here
// Note that just normal arithmetic operators won't work here.
}
}

我给了类型参数两个界限,因为我们只想比较可比较的数字。给予Comparable<T>作为第二个边界,您可以使用 compareTo()比较方法。

另请注意,这不适用于基本类型数组,例如 int[][] .你必须有 Integer[][] , 或 Float[][]

关于java - 如何将反向比较器重写为通用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com