阅读时间: 5分钟
comparator interface 可以被用作集合外部实现的排序。
它是在java.util package。
它有两个methods:
分别是compare(Object obj1, Object obj2)
和equals(Object element)
我们可以利用Comparator去为物件的属性重新排序(例如 ID号码、名字、电话等等)。
而且完成Comparator的资料可以通过Collections.sort 或者Arrays.sort实现排序。
compare()
public interface Comparator<T> { int compare(T o1, T o2);}
•一个负数,即是第一个参数比第二个小。
•零,即是第一个参数等于第二个。
•一个正数,即是第一个参数比第二个大。
例子:
import java.time.LocalDate;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class ComparatorExample { public static void main(String[] args) { List<Employee> employees = new ArrayList<>(); employees.add(new Employee(1010, "Atom", 100000.00, LocalDate.of(2020, 1, 1))); employees.add(new Employee(1004, "Ben", 95000.50, LocalDate.of(2020, 1, 11))); employees.add(new Employee(1015, "Coco", 134000.00, LocalDate.of(2020, 1, 28))); employees.add(new Employee(1009, "Doggy", 100000.00, LocalDate.of(2020, 1, 18))); System.out.println("Employees : " + employees); // 按员工的名字排序 Comparator<Employee> employeeNameComparator = new Comparator<Employee>() { @Override public int compare(Employee e1, Employee e2) { return e1.getName().compareTo(e2.getName()); } }; Collections.sort(employees, employeeNameComparator); System.out.println("\nEmployees (Sorted by Name) : " + employees); //按员工的工资排序 Comparator<Employee> employeeSalaryComparator = new Comparator<Employee>() { @Override public int compare(Employee e1, Employee e2) { if(e1.getSalary() < e2.getSalary()) { return -1; } else if (e1.getSalary() > e2.getSalary()) { return 1; } else { return 0; } } }; Collections.sort(employees, employeeSalaryComparator); System.out.println("\nEmployees (Sorted by Salary) : " + employees); //按员工加入的日期排序 Comparator<Employee> employeeJoiningDateComparator = new Comparator<Employee>() { @Override public int compare(Employee e1, Employee e2) { return e1.getJoiningDate().compareTo(e2.getJoiningDate()); } }; Collections.sort(employees, employeeJoiningDateComparator); System.out.println("\nEmployees (Sorted by JoiningDate) : " + employees); }}
参考文章/网站/书本:
Interface Comparator