Comparable接口
开发工具与关键技术:java,集合,Comparable,compareto
作者:张启翔
撰写时间:2019-05-16
Comparable接口简介
接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。
在API中的专业说词中也许太过于专业化,通俗点就是实现了Comparable接口的集合,集合里的元素自身具备比较性。覆盖compareTO方法。这种方式也称为元素的自然顺序,或者叫做默认顺序。(所谓的自然顺序就是ASCII编码表进行排序的)。
接下来使用看一个例子:将集合中的元素排序,使用Comparable接口
运行代码 :
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class ComparableDemo {
public static void main(String[] args) {
ArrayList<Student> list =new ArrayList<Student>();
list.add(new Student(3,"王五"));
list.add(new Student(1,"张三"));
list.add(new Student(4,"赵六"));
list.add(new Student(2,"李四"));
Collections.sort(list);
Iterator<Student> it =list.iterator();
while(it.hasNext()){
Student s= it.next();
sop(s.getId()+s.getName());
};
}
public static void sop(Object obj){
System.out.println(obj);
}
}
调用类代码:
class Student implements Comparable<Student>{
private int id;
private String name;
public Student(){};
public Student(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return this.id-o.id;
}
}
如果没有实现Comparable接口,就无法排序。看下图错误。