comparetor在java中是如何工作的?
import java.util.*;
public class S {
static Scanner sc = new Scanner(System.in);
static Integer a[] = new Integer[3];
public static void main(String[] args) {
int t = sc.nextInt();
while (t-- > 0) {
int n=3;
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
Arrays.sort(a,new Sort1());
}
}
}
class Sort1 implements Comparator<Integer>
{
public int compare(Integer a,Integer b)
{
for(int a1:S.a){
System.out.print(a1+" ");
}
System.out.println();
// return a-b;
return 1;
}
}
输入:
1
5 2 7
输出
5 2 7
为什么输出不是7 5 2?
如果我们比1还多,我会怎么想。
1.5
2.5 2(becuse of one return)=>2 5
3.7 2 5=>7 5 2
简而言之,我很好奇内部值是如何进行比较和排序的。
所以您对Comparator
的理解是错误的。
从名称本身,我们可以假设它需要比较一些东西,对吗?但在你的代码中,你没有比较任何东西,而是在比较器中打印值,这是错误的。
如果你检查比较器的参数,你可以看到两个整数正在传递给它。这些整数实际上是你的数组元素。你需要比较一下那些元素。
public int compare(Integer a,Integer b)
{
if(a < b){
return 1;
}else if( a == b){
return 0;
}
else {
return -1;
}
}
像这样,打印你的数组。它将被排序