多个对象做比较,就要有“比较规则”,然后实现排序
事实上,Java中排序算法的底层也依赖Comparable接口
Comparable接口中只有一个方法:
punblic int comparTo(Object obj)obj 为要比较多对象
方法中,将当前对象和obj这个对象进行比较,如果大于返回一,等于返回0,小于返回-1,(此处的1也可以是正整数,-1也可以是负整数)comparTo方法的代码也比较固定:
public int comparableTo(Object o){
Man man = (Man)o;
if(this.age<man.age){
return-1;
}
if(this.age>man.age){
return 1;
}
return 0;
}
例:
package com.gaobo.testshuzu;
import java.util.Arrays;
//测试Comparable
public class Test12 {
public static void main(String[] args) {
Man2[]msMans = {new Man2(3,"a"),
new Man2(60,"b"),
new Man2(2,"c")};
System.out.println(Arrays.toString(msMans));
Arrays.sort(msMans);//处理排序,必须要实现comparable接口
System.out.println(Arrays.toString(msMans));
}
}
//comparable接口定义的是规则
class Man2 implements Comparable {//Man2继承父类接口Comparable,数组里有多个man
int age;
int id;
String name;//属性
public Man2(int age,String name){
super();//两种作用;1,调用属性和方法。2,调用构造器
this.age = age;
this.name = name;
}
public String toString(){
return this.name;
}
public int compareTo(Object o){
Man2 man2 = (Man2)o;
if(this.age < man2.age){
return -1;
}
if(this.age > man2.age){
return 1;
}
return 0;
}
}//定义规则