3-3排序问题

3-3排序问题

1,根据字母排序的话,是根据字母表先后自然顺序的?还是根据ASICC表排序的,我知道中文是根据ASICC排序的


2、

public int compare(Cat o1, Cat o2) {

// 按照名字升序排序

String name1=o1.getName();

String name2=o2.getName();

int n=name1.compareTo(name2);

return n;

}


这个返回的返回值的,为负数,0,正数, 和

Collections.sort(catList, new NameComparator());

这个排序有什么关联阿, 不太懂这里面的原理; 如果大于为负数如何,=0如何,正数又如何呢?  和sort这个方法,有什么联系呢?


3、sort这个方法,进行两个比较又是为了什么呢???

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

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

2回答
好帮手慕阿园 2021-01-19 10:14:46

同学你好

1、是的,如果name1>name2,返回值大于0,也就是为正数,表示升序

2、这里跟赋值并没有多大关系,而是这里这样比较,name1的值小于name2的值,返回负正数,如果name1的值大于name2,返回正整数,说明第一个比第二个大(交换两个的位置);返回值小于0,说明第一个比第二个小(不交换两个的位置);最后通过比较从而实现升序排序

3、是的,这样理解也是可以的

同学可以参考下面这个问答中老师的回答进行理解下

https://class.imooc.com/course/qadetail/274149

祝学习愉快~

  • 提问者 rock221 #1

    就是说 name1.compareTo(name2),这样写,即使返回值是负数,或者0,那么位置就不变,只有正数的情况下,在会升序,所以不用考虑值是多少,只要name1>name2,才会变更位置,小于的话,符合自然逻辑, 就不变啦,这是一个公式,对不对。

    2021-01-19 10:36:54
  • 好帮手慕阿园 回复 提问者 rock221 #2

    同学你好,是的,如果name1>name2,返回正整数,说明第一个数比第二个数大,就进行交换位置,则就是升序;而name1<name,返回负整数,说明第一个小,这样本身就是升序状态,就不进行交换;所以name1.compareTo(name2)就是实现了升序

    祝学习愉快~

    2021-01-19 11:32:01
好帮手慕阿园 2021-01-18 18:51:10

同学你好

1、字母排序是按照每个字母的ASCII码的数值来排序的

2、compare方法返回值是正整数 ,或负整数,或 0 ;相当于一个标志,如果是正整数,就升序,如果是负整数 就降序,如果是0,则不变;

sort方法是根据指定比较器产生的顺序,对指定列表进行排序;也就是说sort()方法的第一个参数为要排序的集合对象。第二个参数为实现了Comparator接口的对象,在这个对象中指定了排序的规则,比如升序,或者降序

返回值跟sort()方法的关系就是,sort()方法会根据返回值来决定是升序排列还是降序排列

3、sort()方法并不是将这两个参数进行比较,而是第一个参数是要对谁排序,第二个参数是按照什么样的方式进行排序

祝学习愉快~


  • 提问者 rock221 #1
    那老师在讲升序的时候怎么知道结果为正数,为升序呢? 当时Test类还没有创建。
    2021-01-18 18:54:25
  • 好帮手慕阿园 回复 提问者 rock221 #2

    同学你好,name1.compareTo(name2)返回n,表示如果两个字符串的比较结果大于0,就把前一个自字符串和后一个字符串交换,也就是把大的字符串放后面了,即所谓的升序了!

    祝学习愉快~

    2021-01-18 19:21:20
  • 提问者 rock221 回复 好帮手慕阿园 #3
    那如果比较的值小于0,就是倒序了啊,为什么老师视频中讲的,倒序需要,name1和name2,换下位置呢?
    2021-01-18 19:24:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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