记录个人学习,仅供参考
Comparator接口主要配合Arrays.sort()方法对数组元素进行排序,位于java.util包;
public static <T> void sort(T[] a,Comparator<? super T> c)
使用方法
- 创建类A实现Comparator接口;
- 重写Comparator中的int compare(T o1, T o2)方法,自定义比较规则;
// 默认是按自然顺序排序,即从小到大;
// 如果返回值小于0,说明比较结果是o1<o2,如果返回值等于0,说明比较结果是o1=o2,如果返回值大于0,则说明比较结果是o1>o2。
- 调用Arrays.sort()方法,传入需排序数组和类A的实现对象 ;
public static void sort(T[ ] a,Comparator<? super T> c)
- 排序完成输出查看结果;
练习
package pack1;
import java.util.Arrays;
import java.util.Comparator;
//====Comparator<T>接口的使用
public class Day_0722 {
public static void main(String args[]){
MyClass [] ms = new MyClass[3];
ms[0] = new MyClass(2);
ms[1] = new MyClass(1);
ms[2] = new MyClass(3);
System.out.print("=========排序前:\n");
for(MyClass m : ms){
System.out.println(m.age);
}
System.out.print("=========排序后:\n");
Arrays.sort(ms,new MyComparator());
for(MyClass m : ms){
System.out.println(m.age);
}
}
}
class MyClass{
MyClass(int a){//含参的构造方法
this.age=a;
}
protected int age;
}
class MyComparator implements Comparator<MyClass>{
@Override
public int compare(MyClass o1, MyClass o2) {
// 重写比较函数,默认是按自然顺序排序,即从小到大;
// 如果返回值小于0,说明比较结果是o1<o2,如果返回值等于0,说明比较结果是o1=o2,如果返回值大于0,则说明比较结果是o1>o2。
return o1.age-o2.age;
}
}
输出结果
=========排序前:
2
1
3
=========排序后:
1
2
3