亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

誰能告訴我這里面的this代表什么?如果o是代表傳入的學生對象,那么this又代表什么?

代碼:

@Override

public int compareTo(student o) {

// TODO 自動生成的方法存根

return this.id.compareTo(o.id);

}


正在回答

2 回答

比如你有Student? ?A,Student B,兩個對象,這樣用:A.compareTo(B)。這里的compareTo就是上面寫的方法,f方法里的this就是你調用方法的這個對象,也就是這的A,o是傳入的對象,就是這的B。

0 回復 有任何疑惑可以回復我~
#1

福工劉德華 提問者

因為我要給student的泛型排序,collections.sort(studentList)報錯,所以重寫了這個compareTo方法,所以你所舉例的學生A在這里我可以理解為指的是我所定義的那個student泛型的list(studentList)嗎?
2017-11-06 回復 有任何疑惑可以回復我~
#2

慕粉3617928 回復 福工劉德華 提問者

這個sort排序也是要去進行兩個對象的比較的,sort在這是根據compareTo對對象比較來排序的,所以需要你定義這個方法。這里collection里是對象,對象的比較是需要你去定義比較的方式的,也就是定義的compareTo,和equals類似。這里sort方法里是調用了compareTo方法去比較排序,至于你說的this是什么?他實際也是通過剛說的A、B這種形式來比較的,就是這里面的對象Student。 這個需要配合代碼看更容易理解,實在不明白,先記下上面說的用法,至于collection.sort就是它方法里的具體實現了。
2017-11-06 回復 有任何疑惑可以回復我~

這里的this指的是調用該改寫后的compareTo方法的對象,比如一個Student對象a,那么在對象a中調用compareTo方法就是a.compareTo(o),那么這個this指針指向的就是a對象,那么這個a.compareTo(o)的作用就是返回a.id與o.id的比較值,也就是在這里再調用a的屬性id中的compareTo方法與o.id進行比較。從而實現根據學生id來對學生進行排序。重寫這個方法主要是因為用sort方法對集合元素進行排序的時候,sort方法是通過對集合里的元素兩兩之間調用compareTo方法來排序的。

0 回復 有任何疑惑可以回復我~
#1

福工劉德華 提問者

因為我要給student的泛型排序,collections.sort(student)報錯,所以重寫了這個compareTo方法,所以你所說的那個調用當前compareto的對象指的是collections類嗎?還是說這個this指的的是構造方法里的student,但是構造方法里的我是寫string id;并沒有賦初值又怎么和傳進來的student o比較呢?
2017-11-06 回復 有任何疑惑可以回復我~
#2

福工劉德華 提問者

是collections.sort(studentlist)
2017-11-06 回復 有任何疑惑可以回復我~
#3

_Devil___4213279 回復 福工劉德華 提問者

調用當前方法的對象指的是Student類,它要實現了Comparable接口,才能使用collections類中的靜態方法sort。 你改寫Comparable接口中的的compareTo方法,使它能夠通過比較學生id來進行排序。至于聲明了id對象卻沒有賦值,我認為這個時候是沒有辦法調用id屬性的compareTo 方法進行比較的??梢杂肊clipse跑一跑,看看會不會拋出異常。
2017-11-06 回復 有任何疑惑可以回復我~
#4

福工劉德華 提問者 回復 _Devil___4213279

可是我認為this(即student).id的id沒有任何初值,如何compareto(o.id即傳進來的學生對象)
2017-11-06 回復 有任何疑惑可以回復我~
#5

_Devil___4213279 回復 福工劉德華 提問者

在這個問題上我也是和你一樣的想法法的呀,id為null,就不能調用其compareto方法。
2017-11-07 回復 有任何疑惑可以回復我~
查看2條回復

舉報

0/150
提交
取消

誰能告訴我這里面的this代表什么?如果o是代表傳入的學生對象,那么this又代表什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號