首页 > 代码库 > compareto方法

compareto方法

Comparable接口中的compareto方法:

 public int compareTo(T o);

返回值含义

小于零:此实例按排序顺序在 obj 前面。

零:此实例与 obj 在排序顺序中出现的位置相同。

大于零:此实例按排序顺序在 obj 后面。

String类中的compareto方法:

public int compareTo(String anotherString) {    int len1 = count;    int len2 = anotherString.count;    //获取到两个字符串的较短的长度    int n = Math.min(len1, len2);    char v1[] = value;    char v2[] = anotherString.value;    int i = offset;    int j = anotherString.offset;    if (i == j) {        int k = i;        int lim = n + i;        while (k < lim) {            char c1 = v1[k];            char c2 = v2[k];            //如果两个字符的ASC不相同,则直接返回     if (c1 != c2) {                return c1 - c2;            }            k++;        }    } else {        while (n-- != 0) { //长度不同的情况:将前面长度相同的字母进行比较,如果不同返回ASCII码的差值;如果都相同,直接求长度的差值           char c1 = v1[i++];           char c2 = v2[j++];             //如果两个字符的ASC不相同,则直接返回           if (c1 != c2) {               return c1 - c2;           }        }    }    //如果都一样,返回两个字符串的长度查    return len1 - len2;    }

"abcd".compareTo("adef")== -2

"abc".compareTo("abcdef")== -3

"abc".compareTo("abc") == 0

重写Comparable接口compareto方法

@Overridepublic int compareTo(Object o){    if(o instanceof Student){        Student s = (Student)o;        //return this.name.compareTo(s.name);//按name属性从低到高排序        return this.id - s.id; //按id属性从小到大排序    }    return 0;}

compareto方法