目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

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)]
    }

作者:Soulboy