Comparable接口
一、简介
该接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
如果你想实现类的对象比较(排序), 就必须实现Comparable接口.
compareTo() 方法:
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数
二、实例
实现对象的比较:定义一个Student类,实例化两个Student对象,根据年龄对两个实例化对象进行比较,输出年龄大的对象详细信息
话不多说,直接上代码:
【Student .java】
package cn.Da_xiong.algorithm.Demo1.sort;
//Comparable接口 对对象进行排序
//1.定义一个学生类Student ,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;
//定义两个属性,使用构造器添加getter函数、setter函数,toString函数,=
//implements一个comparable接口,重写一个方法(根据年龄进行比较)
public class Student implements Comparable<Student>{
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写toString方法
@Override
public String toString() {
return "Student{" +
"username='" + username + '\'' +
", age=" + age +
'}';
}
//重写compareTo方法
@Override
public int compareTo(Student o) {
return this.getAge()-o.getAge();
}
}
【TestComparable .java】
package cn.Da_xiong.algorithm.Demo1.test;
import cn.Da_xiong.algorithm.Demo1.sort.Student;
//Comparable接口 对对象进行排序(根据属性age)
// 2.定义测试类Test ,在测试类Test中定义测试方法Comparable getMax(Comparable C1,Comparable c2)完成测试
public class TestComparable {
public static void main(String[]args){
//创建两个Student对象,并调用getMax方法,完成测试。
Student s1 = new Student();
s1.setUsername("张三");
s1.setAge(18);
Student s2 = new Student();
s2.setUsername("李四");
s2.setAge(20);
Comparable max = getMax(s1,s2);
System.out.println(max);
}
//通过ComparableTo方法返回的result来返回不同的对象
public static Comparable getMax(Comparable c1,Comparable c2){
int result = c1.compareTo(c2);
//如果result<0,则c1比c2小
//如果result>0,则c1比c2大
//如果result=0,则c1和c2一样大
if(result>=0){
return c1;
}else{
return c2;
}
}
}