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移动, 即从小到大排序

  • 相关阅读:
    超赞!不容错过的5款实用网页开发和设计工具
    如何从平面设计转行到UI设计?
    线段树
    RMQ
    Splay
    Treap
    *模板--矩阵
    最小生成树
    hash
    ac自动机
  • 原文地址:https://www.cnblogs.com/kikochz/p/12792183.html
Copyright © 2011-2022 走看看