首页 > 代码库 > String中的CompareTo
String中的CompareTo
在API源码中,String的compareTo其实就是一次比较两个字符串的ASCII码。如果两个字符串的ASCII相等则继续后续比较,否则直接返回两个ASCII的差值。如果两个字符串完全一样,则返回0.下面是源码:
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) { char c1 = v1[i++]; char c2 = v2[j++]; //如果两个字符的ASC不相同,则直接返回 if (c1 != c2) { return c1 - c2; } } } //如果都一样,返回两个字符串的长度查 return len1 - len2; }
由上面的代码,我们可以很方便计算两个字符串的compareTo的值:
int i1 = "abcd".compareTo("adhf");
int i2 = "abc".compareTo("abcdef");
int i3 = "abcd".compareTo("abc");
System.out.println(i1);//-2
System.out.println(i2);-3
System.out.println(i3);0
举例:compareTo的实际应用?于进行简单的字符串排序。(例如使用compareTo进行姓名的排序)
// 使用简单的循环排序 for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[i].compareTo(array[j]) > 0) { String temp = array[i]; array[i] = array[j]; array[j] = temp; } } } for (int i = 0; i < 5; i++) { System.out.println(array[i]); } }
针对上面String的排序后,字符串的内容将会是:
james libai lilei owen wolf
String中的CompareTo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。