实现Java对象的排序
-
需要排序的类实现
Comparable
接口,重写comparaTo
方法-
实体类
package com.company.entity; import java.util.Objects; public class Student implements Comparable<Student> { private String name; private Integer age; public Student(String name, Integer age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return Objects.equals(name, student.name) && Objects.equals(age, student.age); } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int hashCode() { return Objects.hash(name, age); } @Override public int compareTo(Student o) { return this.age - o.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
-
测试类
package com.company.entity; import java.util.*; public class Test01 { public static void main(String[] args) { List<Student> list = new ArrayList<>(); list.add(new Student("lcl",20)); list.add(new Student("mjq",17)); list.add(new Student("lol",21)); list.add(new Student("zyx",16)); Collections.sort(list); System.out.println(list); } }
-
-
定义一个单独类实现
Comparator
接口,重写compara
方法-
实现类
class MyComparable implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { return o1.getAge() - o2.getAge(); } }
-
测试类
package com.company.entity; import java.util.*; public class Test01 { public static void main(String[] args) { List<Teacher> list = new ArrayList<>(); list.add(new Teacher("lcl",20)); list.add(new Teacher("mjq",17)); list.add(new Teacher("lol",21)); list.add(new Teacher("zyx",16)); MyComparable parable = new MyComparable(); Collections.sort(list,parable); System.out.println(list); } }
-
-
使用内部类方式,实现排序
package com.company.entity; import java.util.*; public class Test01 { public static void main(String[] args) { List<Teacher> list = new ArrayList<>(); list.add(new Teacher("lcl",20)); list.add(new Teacher("mjq",17)); list.add(new Teacher("lol",21)); list.add(new Teacher("zyx",16)); Collections.sort(list, new Comparator<Teacher>() { @Override public int compare(Teacher o1, Teacher o2) { return 0; } }); System.out.println(list); } }