[Java] Comparator interface 介绍

阅读时间: 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

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章