比较器在Java中是如何工作的



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

像这样,打印你的数组。它将被排序

相关内容

  • 没有找到相关文章

最新更新