比较器的使用
比较器的作用:基本数据类型可以用sort();方法排序,但是引用数据类型不能用sort()排序或者比较大小得到我们想要的答案,就出现了比较器
1.内部比较器
接口:Comparable
实现方法: compareTo(Object o)
下面展示一些 内联代码片
。
public class People implements Comparable<People> {
String name ;//姓名
int age;//年龄
public People(String name, int age) {
this.name = name;
this.age = age;
}
@Override//重写父类比较方法,比较年龄的大小
public int compareTo(People p) {
return this.age-p.age;//两个年龄相减,返回正整数(表示比当前对象小) 0(表示相等) 负整数(表示比当前对象大)
}
public static void main(String[] args) {
//创建两个对象
People people1= new People("张三",18);
People people2= new People("李四",20);
System.out.println(people1.compareTo(people2));
}
}
特点:
1.适用于两个对象的大小
2.在一个类里面完成
2.外部比较器
接口: Comparator
实现方法:compare( Object o1, Object o2)
下面展示一些 `内联代码片`。
创建一个People类
public class People01 {
String name ;//姓名
int age;//年龄
public People01(String name, int age) {
this.name = name;
this.age = age;
}
@Override//重写toString 方法
public String toString() {
return "People01{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
创建一 个外部类实现Comparator接口
用compare(People01 o1, People01 o2)制定比较规则
下面展示一些 内联代码片
。
import java.util.Comparator;
public class ComparePeople implements Comparator<People01> {
@Override
public int compare(People01 o1, People01 o2) {
return o1.name.codePointAt(0)-o2.name.codePointAt(0);
}
}
创建一个测试类test
下面展示一些 内联代码片
。
import java.util.Arrays;
public class test {
public static void main(String[] args) {
//创建一个People01的对象数组
//讲People01的对象放到People01的对象数组里面
People01 []people01={
new People01("嘻嘻",18),
new People01("哈哈",12),
new People01("呵呵",20),
new People01("气气",35),
};
System.out.println("排序前:");
System.out.println(Arrays.toString(people01));
Arrays.sort(people01,new ComparePeople());//sort()第一个参数:比较的对象,第二个参数比较规则
System.out.println("排序后:");
System.out.println(Arrays.toString(people01));
}
}
特点:
1.适用于多个对象的比较、排序
2层次清晰,简单易懂