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