一、使用场景
1.数组排序:Arrays.sort(object);
2.集合排序:Collections.sort(object);
二、使用方法
1.实现Comparable接口时需要实现compareTo方法
2.Comparator的使用需要重写compare方法
三、栗子:实现Comparable接口
1.先创建一个Person类
package lesson3;
public class Person implements Comparable<Person>{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Person o) {
return age - o.age;
}
}
2.进行按照年龄的排序
package lesson3;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PersonDemo {
public static void main(String[] args) {
List<Person> list = new ArrayList<>();
Person p1 = new Person("a",18);
Person p2 = new Person("v",5);
Person p3 = new Person("d",7);
Person p4 = new Person("e",90);
Person p5 = new Person("h",43);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
Collections.sort(list);
System.out.println(list);
}
}
四、使用Comparator
1.先创建学生类:
package lesson3;
public class Student {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2.进行按照年龄排序:
package lesson3;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentDemo {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
Student s1 = new Student("z",18);
Student s2 = new Student("f",6);
Student s3 = new Student("t",7);
Student s4 = new Student("y",45);
Student s5 = new Student("i",2);
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return (o1.age) - o2.age;
}
});
System.out.println(list);
}
}
五、两者的区别:
- 如果你在刚开始时就知道该类需要进行排序,那么就是实现Comparable接口
- 如果刚开始不知道需要排序,但是在写代码的过程中,发现需要进行排序了,就是用Comparator