Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持 排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或 Arrays.sort进行自动排序。
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指 定比较器。
此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正整数。
public class ListComparableDemo {
public static void main(String[] args) {
List<PersonComparable> persons = new ArrayList<PersonComparable>();
persons.add(new PersonComparable("小A",35));
persons.add(new PersonComparable("小B",25));
persons.add(new PersonComparable("小C",25));
persons.add(new PersonComparable("小D",15));
persons.add(new PersonComparable("小X",45));
persons.add(new PersonComparable("小M",35));
persons.add(new PersonComparable("小E",21));
//排序的方法
//第三步 调用sort排序
Collections.sort(persons);
//for循环
for (PersonComparable person : persons) {
System.out.println(person.getName()+" "+person.getAge());
}
//System.out.println(persons);
}
}
//第一步 :实现接口Comparable<T>
class PersonComparable implements Comparable<PersonComparable>{
private String name;
private int age;
//构造器
public PersonComparable() {
super();
}
//构造器
public PersonComparable(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
/**
* 第二步 实现compareTo方法 o 表示和当前对象比较的另外一个对象
*/
@Override
public int compareTo(PersonComparable o) {
//从小到大:this-o
//从大到小:o-this
//return this.age-o.age;
if(this.age!=o.age){
return this.age-o.age;
}else{
return this.name.compareTo(o.name);
}
}
}