zoukankan      html  css  js  c++  java
  • Comparable和Comparator

    Comparable 和 Comparator

    参数和this比较只有 return -1 时才会移动元素, 0和1都不会移动元素

    调用compareTo方法的是第二个元素, 参数是前一个元素 , 即this 是第二个元素

    从小到大,1和0不动,-1往前移动
    • this大于obj,返回正整数

    • this小于obj,返回负整数

    • this等于obj,返回零

    从大到小
    • this大于obj,返回负整数

    • this小于obj,返回正整数

    • this等于obj ,返回零

    ComparableTo() 从小到大

    -ComparableTo() 从大到小

    #Comparable 是内部比较器
    public int compareTo(Person o) {
    • 从小到小

    if (o.age>this.age){
        return -1; 
    }else{
        return 1;
    }
    • 从大到小

    if (this.age>o.age){
        return -1; 
    }else{
        return 1;
    }
    #Comparator 是外部比较器
     String[] a = new String[]{"A", "C", "F", "B"};
            Arrays.sort(a, String::compareTo);

    这里是Comparator的compare方法指向String的compareTo方法, 即compare方法的具体实现是compareTo

     

    public int compare(Student s1, Student s2) {
                    int flag;
                    // 首选按年龄升序排序
                    flag = s1.getAge()-s2.getAge();
                    if(flag==0){
                        // 再按学号升序排序
                        flag = s1.getNum()-s2.getNum();
                    }
                    return flag;
                }

    s1代表的就是this(从第二个开始), s2代表的就是this的前一个元素, 如果小于零移动, s1移动, 即从小到大排序

  • 相关阅读:
    让DIV实现抖动效果!
    Linux下如果python2和python3同时存在使用pip3
    Eclipse 查找一个接口的具体实现
    linux下编译安装软件到指定目录
    NG机器学习-octave基本操作
    NG机器学习
    全注解方式构建SpringMVC项目
    Java多线程学习开发笔记
    RabbitMQ 学习开发笔记
    Redis 学习开发笔记
  • 原文地址:https://www.cnblogs.com/kikochz/p/12792183.html
Copyright © 2011-2022 走看看