比较器在 Java 中如何工作?
How comparator works in Java?
how comparetor works in 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?
如果我们 return 1 than.
我会怎么想
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;
}
}
像这样并在 main 中打印你的数组。它将被排序
how comparetor works in 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?
如果我们 return 1 than.
我会怎么想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;
}
}
像这样并在 main 中打印你的数组。它将被排序