多个对象进行排序时,需要根据对象的什么属性来排序。
例如,同样都是人,可以根据人的身高排序,可以根据人的年龄排序。因此,当对多个人进行排序时,就要事先确定好根据人的什么属性来排序。
使Comparable 接口,就是用来做这个的。
示例代码:
import java.util.Arrays;
class Man2 implements Comparable{ //创建一个Man2类,同时让这个类实现Comparable接口
int age;//定义Man2类的三个普通属性
int id;
String name;
public Man2 (int age, String name){//定义Man2类的构造器
super();
this.age = age;
this.name = name;
}
public String toString(){//重写toString,这样后面在使用它输出时就只输出名字
return this.name;
}
public int compareTo (Object o) {//实现Comparable接口里要的方法,定义清楚以什么属性来比较
//int 表示返回值是整数型
Man2 man2 = (Man2) o;//当Arrays.sort(manyMan)在底层调用compareto方法时,无论传进来什么对象
//都强制转换成Man2类型
if(this.age < man2.age){
return -1;
}
if(this.age >man2.age){
return 1;
}
return 0;
}
}
public class Test003 {
public static void main(String[] args) {
Man2[] manyMan = {
new Man2(18,"张三"),
new Man2(60,"李四"),
new Man2(10,"王五"),
};
System.out.println(Arrays.toString(manyMan));
Arrays.sort(manyMan);
System.out.println(Arrays.toString(manyMan));
}
}
运行结果: