Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。
此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。
此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正整数。
实例代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class InterfaceIpml{
public static void main(String[] args) {
//Comparable排序接口
List<ListComparable> sort = new ArrayList<ListComparable>();
sort.add(new ListComparable(10,"小A"));
sort.add(new ListComparable(11,"小B"));
sort.add(new ListComparable(13,"小C"));
sort.add(new ListComparable(12,"小D"));
sort.add(new ListComparable(14,"小E"));
sort.add(new ListComparable(15,"小F"));
sort.add(new ListComparable(11,"小G"));
//调用sort排序
Collections.sort(sort);
//使用迭代器遍历输出数据
Iterator<ListComparable> iterator2 = sort.iterator();
while (iterator2.hasNext()) {
ListComparable listComparable = iterator2.next();
System.out.println(listComparable.getId()+"\t"+listComparable.getName();
}
}
}
//实现接口Comparable
class ListComparable implements Comparable<ListComparable>{
private int id;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public ListComparable() {
super();
}
public ListComparable(int id, String name) {
super();
this.id = id;
this.name = name;
}
/**
* 第二步 实现compareTo方法 o 表示和当前对象比较的另外一个对象
*/ @Override
public int compareTo(ListComparable o) {
// TODO Auto-generated method stub
// 从小到大 :this-o
// 从大到小:o-this
// return this.age - o.age;
//改进比较方法:先根据年龄排序,如果年龄一样,根据姓名排序
if (this.id != o.id) {
return this.id - o.id;
} else {
return this.name.compareTo(o.name);
}
}
}