//JAVA中用于对象排序的比较器Comparable接口和compareTo()方法
//面向对象的三大特性:封装,继承,多态。
//JAVA中的比较器接口Comparable用于数组对象的排序,要使用此功能,必须让类继承自Comparable接口,重写compareTo(Object obj)方法。
import java.util.*;
class Person implements Comparable{ //实现了comparable接口,必须重写compareTo方法!!!
private String name;
private int age;
private float score;
public Person(String name,int age,float score){
this.name=name;
this.age=age;
this.score=score;
}
public String toString(){
return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score;
}
public int compareTo(Object obj){ //compareTo方法是实现
Person p = (Person)obj;
if(p.score>this.score){
return 1;
}
else if(p.score<this.score){
return -1;
}
else{
if(p.age>this.age){
return 1;
}
else if(p.age<this.age){
return -1;
}
else{
return 0;
}
}
} //compareTo方法结束
} //类结束
public class OODemo35{
public static void main(String []args){
Person p[] = new Person[5];
p[0] = new Person("张三 ",23,96);
p[1] = new Person("张三2",24,96);
p[2] = new Person("张三3",21,94);
p[3] = new Person("张三4",22,98);
p[4] = new Person("张三5",20,89);
Arrays.sort(p); //对数组p内的元素进行了遍历操作(排序) 默认的方法是compareTo
for(int x=0;x<p.length;x++){
System.out.println(p[x]); //输出数组元素时默认的是toString()方法
}
}
}
//输出结果:
//姓名:张三4, 年龄:22, 成绩:98.0
//姓名:张三2, 年龄:24, 成绩:96.0
//姓名:张三 , 年龄:23, 成绩:96.0
//姓名:张三3, 年龄:21, 成绩:94.0
//姓名:张三5, 年龄:20, 成绩:89.0
//--------------------------------------------------
重写compareTo方法
最新推荐文章于 2021-09-18 17:22:55 发布