• compare排序原理


      public int compareTo(Student o) {
    
            return this.age - o.age; // 比较年龄(年龄的升序)
      }
    

    为什么return this.age-o.age是升序?  困扰很久的痛点,终于想明白,想明白就很好理解跟记忆了,还是要多学习鸭!

    第一步:首先要知道 Collections.sort()方法进行排序的时候,sort里面默认是升序排序。这里一定要记住了。

    第二步:  compare函数的返回值-1、1、0是什么个意思? 

    返回值为-1, 表示左边的数比右边的数小,左右的数不进行交换。

    返回值为0, 表示左边的数等于右边的数,左右的数不进行交换。

    返回值为1, 表示左边的数比右边的数大,左右的数进行交换。(不进行交换的话,就没办法维持升序)

    上面的例子中this.age可以理解成左边的数,o.age可以理解成右边的数。

    this.age-o.age>0 说明左边的数比右边的数大,return this.age-o.age 返回的是一个正数,就进行左右交换,所以最终输出是升序。

    this.age-o.age<0 说明左边的数比右边的数小,return this.age-o.age 返回的是一个负数,不用进行交换,所以最终输出是升序。

    可以看看下面这个实例,就更加清晰了。

    https://bbs.csdn.net/topics/390951144?page=1

    进阶:那这里返回值等于0,难道不是完全没用了?虽然对两个数字而言交换顺序没有影响,但是如果是map对象则有影响。

    具体有什么影响呢?夜深了,下次再慢慢写吧。

  • 相关阅读:
    2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛
    牛客小白月赛2
    求n个数中前k个数,按之前的顺序输出(HK IPM)
    js_复选框单选与复选
    js_判断字符串中出现最多的字符的和次数
    js_倒计时
    海通证券面试
    上海利莫面试
    中焯信息面试
    富途面试
  • 原文地址:https://www.cnblogs.com/ow0843/p/10631733.html
Copyright © 2020-2023  润新知