Java排序接口
Comparable接口
- 特点:自然排序,让元素对应的类实现Comparable接口,重写compareTo(T t)方法
- 用法:
public class Student implements Comparable<Student> { @Override public int compareTo(Student s) { return 1;//按存储顺序排序 //return -1; 按存储顺序的逆序排序 } } public class Student implements Comparable<Student> { private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public int compareTo(Student s) {//年龄升序排序,若年龄相同则按姓名升序排序 int t1 = this.age - s.age; int t2 = t1 == 0 ? this.name.compareTo(s.name) : t1; return t2; } }
Comparator接口
- 特点:比较器排序,让集合构造方法接收Comparator接口的实现类对象,重写compare(T t1,T t2)方法
- 注意:如果Comparator只用一次,一般作为匿名内部类出现
- 用法:
public class Main { public static void main(String[] args) { ArrayList<Student> arr = new ArrayList<Student>(new Comparator<Student>() { @override public int compare (Student s1,Student s2) {//年龄升序排序,若年龄相同则按姓名升序排序 int t1 = s1.age - s2.age; int t2 = t1 == 0 ? s1.name.compareTo(s2.name) : t1; return t2; } });