java中compareTo()用法詳解


一、字符串比較用compareTo()時:

1,長度相同,從第一位開始比較,如果相同返回0,如果不同則馬上返回這兩個字符的ascii值的差值。

2,長度不同,直接返回長度差值。

二、Integer比較用compareTo()時:

1,對比數字時相同,返回0。

2,對比數字不同時,返回-1。

 public int compareTo(Student o) {

        return this.age - o.age; // 比較年齡(年齡的升序)
    }

 

應該理解成return (-1)×(this.age-o.age)計算機沒有所謂的正序和逆序,他只管大還是小,你給他小的放前面,大的放后面,然后乘負一,整個順序就反過來了

 

比如:this.age=23, o.age=24,那么:

this.age - o.age=-1 這樣系統就認為this比o小,所以排在this排在前面,就是升序了;

如果寫成  o.age - this.age 就相當於 -(this.age - o.age)=1,這樣系統就認為this比o大了,所以this排在后面,就是降序了。

 

更明白的理解就是:

return this.age > o.age ? -1 : 1;   降序排列   等價於 return o.age - this.age

return this.age > o.age ? 1 : -1;   升序排列   等價於  return this.age - o.age


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM