Comparator比较器

需要重写compare(Object o1,Object o2)方法。

一般是用于java对象的排序

1
2
3
4
5
6
7
8
9
10
11
12
13
class MyComparator implements Comparator<Integer> {

@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
//等同于
/*if(o1 > o2) {
return 1;
}else if(o1 == o2)
return 0;
else return -1;*/
}
}

Arrays.sort()

Arrays类有一个静态方法sort,利用这个方法我们可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的结果也通过这个引用的来更改数组。对于整数、字符串排序,jdk提供了默认的实现,但是如果要对一个对象数组排序,则要自己实现java.util.Comparator接口。

1
2
3
4
5
6
Arrays.sort(nums,new Comparator<E>(){//E是泛型
public int compare(E o1,E o2){
return o2 - o1;//降序
//return o1 - o2; 升序
}
});

在Comparator内部,交换的标准是依据返回值的大小,大于0就交换,小于等于0就不交换。

如果返回值是o1-o2,当返回值是大于0,交换这两个数,说明o1>o2,交换过之后是升序,说明这次排序是升序。

如果返回值是o2-o1,当返回值是大于0,交换这两个数,说明o2>o1,交换过之后是降序,说明这次排序是降序。


Comparator比较器
https://vickkkyz.fun/2022/04/10/Problems/comparator/
作者
Vickkkyz
发布于
2022年4月10日
许可协议