Comparable排序接口
Comparable
- 是 ⼀个接 ⼝,定制排序规则。
- 对实现它的每个类的对象进 ⾏整体排序,⾥ ⾯ compareTo ⽅法是实现排序的具体 ⽅法。
- 比如 TreeSet、SortedSet、Collections.sort() ⽅法调 ⽤进 ⾏排序。
- String、Integer 等类默认实现了这个接 ⼝,所以可以排序(看源码)。
- Comparable 适合于排序规则固定的情况,Comparator(匿名内部类)适合于排序规则变化的情况。
public interface Comparable<T> {
public int compareTo(T o);
}
POJO 类需要实现 Comparable 接口
package com.javase.demo;
import lombok.AllArgsConstructor;
import lombok.Data;
@AllArgsConstructor
@Data
public class Student implements Comparable{
private String name;
private int age;
@Override
public int compareTo(Object o) {
if(o instanceof Student){
Student student = (Student) o;
return this.age - student.age;//升序
//return student.age - this.age; //降序
}
//返回数0代表两个对象相等
//⼤于0, 表示this⼤于传进来的对象o ,则往后排,即升序
//⼩于0,表示this⼩于传进来的对象o
return 0;
}
}
根据学生年龄进行排序
@Test
public void comparableTesting() {
Set<Student> studentSet = new TreeSet<>();
studentSet.add(new Student("a", 15));
studentSet.add(new Student("b", 12));
studentSet.add(new Student("c", 22));
System.out.println(studentSet);//[Student(name=b, age=12), Student(name=a, age=15), Student(name=c, age=22)]
}