public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
我的代碼在id
是Integer
的時候工作正常,什麼時候是正值。 id
可能是負值嗎?如何更改代碼?如何覆蓋compareTo()。如果有可能的話
public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
我的代碼在id
是Integer
的時候工作正常,什麼時候是正值。 id
可能是負值嗎?如何更改代碼?如何覆蓋compareTo()。如果有可能的話
以下是可能實現它的最簡單的方法:
public int compareTo(Object obj) {
Books bk = (Books)obj;
return Integer.compare(this.id, bk.id);
}
您當前的版本幾乎是正確的,但它易受整數溢出。
當您覆蓋compareTo
時,您可以定義這些問題的答案。它完全取決於你的程序是否有可能使id
成爲負值。你必須問自己的問題是:「一本書比另一本更大」(或更小)「意味着什麼?」。如果答案僅僅是其曾經擁有更大的ID是一個較大的書,那麼你的實現是很好,除了一個小的失誤:
public int compareTo(Object obj){
Books bk = (Books) obj;
return this.id - bk.id;
}
我會使用「之前」或「之後」比「更大」更好,但無論如何+1。 – SJuan76
您必須能夠返回負值。從Comparable
規範,如果
a.compareTo(b) > 0
然後
b.compareTo(a) < 0
否則你不能使用compareTo()
囑咐的爲了
您使用的是Java 1.4嗎?從Java 5開始,「Comparable」被生成。 – fge