java中compareTo源代码是怎么实现的

来源:互联网 发布:云主机 知乎 编辑:程序博客网 时间:2024/06/06 20:50
    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];if (c1 != c2) {    return c1 - c2;}k++;    }} else {    while (n-- != 0) {char c1 = v1[i++];char c2 = v2[j++];if (c1 != c2) {    return c1 - c2;}    }}return len1 - len2;    }
整个思路非常简单,跟字典排序是一样的,之所以代码看起来有点恶心是因为string类的存储有个offset变量掺和,如果没有这个东东,那每个string的value值有效起点都是从0开始,怎么对比就一目了然了,说白了就是两个字符串一个个字符对比过去,直到碰到第一个不同的字符,作差返回即可(这样满足负数表示第一个串小,0表示两串相等,正数表示第一串较大)。