关于compareTo的比较顺序

关于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

登陆购买课程后可参与讨论,去登陆

1回答
一叶知秋519 2017-12-26 09:58:31

compareTo的比较规则:按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。和compare传入参数位置相同呢,就和它的返回值是正相关的,反之就你说的这种情况了。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师