zoukankan      html  css  js  c++  java
  • 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对象则有影响。

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

  • 相关阅读:
    java笔记6 Java语言基本类; String和StringBuffer ;集合类;流,文件及文本应用:JDBC
    java笔记5
    java笔记4 异常处理
    java笔记3
    java课笔记2
    java课笔记1
    TEXT
    机器学习
    WordCountPro
    WCProject(java)
  • 原文地址:https://www.cnblogs.com/ow0843/p/10631733.html
Copyright © 2011-2022 走看看