关于compareTo的比较顺序
CatSort cat1=new CatSort("泰迪",2,"小狗");
CatSort cat2=new CatSort("哈士奇",2,"大狗");
CatSort cat3=new CatSort("拉布拉多",2,"大狗");
List<CatSort> list=new ArrayList<CatSort>();
list.add(cat1);
list.add(cat2);
list.add(cat3);
//排序前的输出顺序
System.out.println("排序前的输出顺序");
for(CatSort str:list) {
System.out.println(str);
}
//按名字升序排序
Collections.sort(list, new CatComparator());//CatComparator就可以看成是个比较器
System.out.println("排序后的输出顺序");
for(CatSort str:list) {
System.out.println(str);
}
假设 比较参数不变
int n="泰迪".compareTo("哈士奇");
因为泰迪的字母排序是比哈士奇靠后的,"泰迪"<"哈士奇" ,因此返回值是负整数所以显示输出的时候哈士奇在泰迪前方
int n="拉布拉多".compareTo("哈士奇");
因为拉布拉多的字母排序是比哈士奇靠后,因此返回值是负整数所以显示输出的时候哈士奇在拉布拉多前方
int n="拉布拉多".compareTo("泰迪");
因为拉布拉多的字母排序是比泰迪靠前的,因此返回值是正整数所以显示输出的时候泰迪在拉布拉多后方
所以最终输出 哈士奇.拉布拉多最后是泰迪
他的比较是看如果是负整数,那么参数就在比较值的前方,正整数就在后方吗
把name1.CmpareTo(name2);换一下顺序比较就是不也是一样吗?怎么就变倒序了呢?他是以什么为定位进行排序的呢?
正在回答 回答被采纳积分+1
compareTo的比较规则:按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。和compare传入参数位置相同呢,就和它的返回值是正相关的,反之就你说的这种情况了。
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星