今天看了集合,在treeset中,要自定义排序,需要实现comparable接口(比较器排序),或者自己给出compareTo方法(自然排序),但是实现comparable接口,自己写逻辑这个还好理解一点,但是对于这个compareTo我还是有的懵逼-->因为我看到说
Comparable接口是对应TreeSet的无参构造方法
数值型数据 ---> 数字的大小
字符 ASCII码不够,Unicode值进行比较
字符串 Unicode比较
然后想到了中文字符串排序!!!
原来有这种操作!!!看来还是知识面太窄~~
就跑去看了看源码
//jdk1.8
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);//找到两个字符串中长度最小那个-->return (a <= b) ? a : b;
char v1[] = value;//我理解的是把字符串转成字符数组--在根据码表值进行判断
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
写个个代码验证
水平有限,如若不准确,还请各位大佬指正~~,感谢~