Comparable<T>和Comparator<T>是Java中适用于不同情景下的用来对数据进行比较(排序)的两个接口。
下面举例展示Comparable接口的使用:
情景:有一个存放6个student的数组,每个student有age、name、number三个属性,要求按照number升序,age降序,name按字符串长度升序 的规则对数组中的student进行排序。
代码演示:
定义一个Student类,实现Comparable<T>接口,重写comparaTo方法,在方法中制定规则
class Student implements Comparable<Student> {
private int age;
private int number;
private String name;
public Student(int age, int number, String name) {
this.age = age;
this.number = number;
this.name = name;
}
public Student() {
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", number=" + number +
", name='" + name + '\'' +
'}';
}
@Override
/**
* number升序
* age降序
* name按长度升序
*/
public int compareTo(Student o) {
int i = this.number - o.number;
int j = this.age - o.age;
int k = this.name.length()-o.name.length();