• Comparable和Comparator


    当对自己定义的数据结构需要进行指定排序的时候,java中给了我们两个接口Comparable和Comparator

    第一种:实现Comparator<T>接口

    public class test {
    
        public static void main(String[] args){
            String[] arr = {"aaa","bbbb","c","dd"};
            Arrays.sort(arr,new LengthCompartor());
            System.out.println(Arrays.toString(arr));
        }
    }
    
    class LengthCompartor implements Comparator<String> {
    
        @Override
        public int compare(String first, String second) {
            return first.length() - second.length();
        }
    }

    第二种:

    public class test {
    
        public static void main(String[] args){
            String[] arr = {"aaa","bbbb","c","dd"};
            Arrays.sort(arr, new Comparator<String>() {
                @Override
                public int compare(String first, String second) {
                    return first.length() - second.length();
                }
            });
            System.out.println(Arrays.toString(arr));
        }
    }

     第三种:要排序的类实现Comparable<T>接口

    public class test {
    
        public static void main(String[] args){
            ArrayList<Employee> list = new ArrayList<>();
            list.add(new Employee(1,1000));
            list.add(new Employee(2,500));
            list.add(new Employee(3,800));
            list.add(new Employee(4,700));
            list.add(new Employee(5,1500));
            Collections.sort(list);
            System.out.println(list);
        }
    }
    
    class Employee implements Comparable<Employee>{
        int salary;
        int id;
    
        public Employee(int id,int salary){
            this.id = id;
            this.salary = salary;
        }
    
        @Override
        public int compareTo(Employee o) {
            return this.salary - o.salary;
        }
    
        @Override
        public String toString() {
            return "Employee{" +
                    "salary=" + salary +
                    ", id=" + id +
                    '}';
        }
    }

     在设计初时有需求就选择Comparable,若后期需要扩展或增加排序需求时,再增加一个比较器Comparator。

  • 相关阅读:
    【模板】高斯消元
    【洛谷P1730】最小密度路径
    【模板】矩阵乘法优化线性递推
    【洛谷P3723】礼物
    【洛谷P3338】力
    【模板】NTT
    【洛谷P1919】A*B Problem升级版
    测试理论基础(思维导图)
    Fiddler
    常用 Linux 命令
  • 原文地址:https://www.cnblogs.com/mxj961116/p/11611328.html
Copyright © 2020-2023  润新知