3-3取值问题

3-3取值问题

老师是先写NameComparator这个类的,然后重写了compare这个方法;

在方法中进行了o1和o2的对比,  写完了这个类,才开始写CatTest这个类, 

但是老师在compare这个方法的时候,写的是升序排序。

但是升序排列的规则是  name1>name2, 取正整数,才可以实现升序;

那么老师再还没写测试类,怎么来判断 name1肯定一定>name2,取得是正整数,则实现的是升序呢?


正在回答 回答被采纳积分+1

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

3回答
好帮手慕阿莹 2021-01-18 20:52:29

同学你好,

首先,

compareTo方法的返回值是int类型的,意义就是:

如果返回值小于0,说明第一个比第二个小(不交换两个的位置);

如果返回值等于0,说明第一个等于第二个(不交换两个的位置);

如果返回值大于0,说明第一个比第二个大(交换两个的位置)。

name1.compareTo(name2);  如果 name1 和name2比较,返回的是小于0,也就是 name1 比name2 小,不交换位置,说明这个是个升序

name2.compareTo(name1);   如果 name2 和name1比较,返回的是小于0,也就是name2 比name1 小,不交换位置,说明这个是个降序

同学可以带入一下数字


例如,name1 为 “1 ”,name2为 “2”


name1.compareTo(name2);  返回为负数,且不交换位置, 也就是   “1”,“2”


name2.compareTo(name1); 返回为正数  ,需要交换两个的位置,也就是

“2”,“1”

由此可见,name1.compareTo(name2);为升序

                 name2.compareTo(name1);为降序

问题2:转换成ASICC值吗?

是的,转换成ASICC比较的

不知道老师的讲解同学是否明白了,如果不明白,可以再次提问。


  • 提问者 rock221 #1

    明白,就是

    name2.compareTo(name1); 返回为正数  ,需要交换两个的位置,也就是

    “2”,“1”,这个不太明白,   name2=2,name1=1;  2-1=1,为正数,交换位置不是1,2吗?怎么是2,1? 还是说默认的是1,2,如果符合name2>name1时,对1,2,进行位置更换?

    2021-01-19 10:42:03
  • 好帮手慕阿莹 回复 提问者 rock221 #2

    因为name 2 是一开始在后边的那个呀~~  所以交换后 就是  “2”“1” 啦~~


    集合中  一开始是  name1 ,name2,name3,name4~

    “1”,“2”,“3”,“4”

    然后 


    compareTo可以理解为“2”- “1”>0。

    于是之前的“2”就和“1”换了一下,就成了 “2”,“1”了

    ?

    祝学习愉快。

    2021-01-19 10:48:32
好帮手慕阿满 2021-01-18 19:53:21

同学你好,这是Comparator比较器规定,在name1.compareTo(name2);中,当name1>name2时,name1和name2调换顺序,完成升序排序。如果是name2.compareTo(name1);当name2>name1时,name2和name1调换顺序,就变成降序排序。

祝学习愉快~

  • 提问者 rock221 #1

    问题1:重要的是,在没有传入赋值信息的时候,怎么能知道 name1>name2呢? 老师在将升序的时候,直接写的就是   int n=name1.compareTo(name2); 阿,老师怎么知道,name1肯定>name2呢??老师也说当name1>name2,才升序的啊,有判断因素阿,不需要考虑排序的内容的值吗??我这点特不理解。 

    问题2:name1>name2,这怎么比较的?转换成ASICC值吗?然后看谁的值小,谁的值大吗?

    2021-01-18 20:02:16
好帮手慕阿满 2021-01-18 18:41:44

同学你好,在compare()方法中,使用compareTo()方法进行比较,如:

http://img1.sycdn.imooc.com//climg/6005615809863fab08580398.jpg

compareTo()方法是指按字典顺序比较两个字符串。如果name1字符串和name2字符串相同,则返回值为0 ; 如果name1字符串的字典序比name2字符串字典序小,则返回值小于0; 如果name1字符串的字典序比name2字符串字典序大,则返回值大于0 。这里使用compareTo()方法按字典序进行比较的。

祝学习愉快~

  • 提问者 rock221 #1
    老师并没有回答我的问题啊。
    2021-01-18 18:44:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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