public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
id
が正の値である場合、およびが正の値である場合、私のコードは正常に機能しInteger
ます。id
負の値になることは可能ですか?そのためのコードを変更するにはどうすればよいですか?
public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
id
が正の値である場合、およびが正の値である場合、私のコードは正常に機能しInteger
ます。id
負の値になることは可能ですか?そのためのコードを変更するにはどうすればよいですか?
以下は、おそらくそれを実装する最も簡単な方法です。
public int compareTo(Object obj) {
Books bk = (Books)obj;
return Integer.compare(this.id, bk.id);
}
現在のバージョンは、整数のオーバーフローの影響を受けやすいことを除いて、ほぼ正しいです。
オーバーライドcompareTo
すると、これらの質問に対する答えを定義できます。id
負の値になる可能性があるかどうかは、プログラムによって異なります。あなたが自分自身に問いかけなければならない質問は、「ある本が別の本よりも「大きい」(または小さい)とはどういう意味ですか?」です。答えが、IDが大きい方がBookが大きい方である場合、1つの小さな間違いを除いて、実装は問題ありません。
public int compareTo(Object obj){
Books bk = (Books) obj;
return this.id - bk.id;
}
負の値を返すことができる必要があります。Comparable
仕様から、
a.compareTo(b) > 0
それから
b.compareTo(a) < 0
compareTo()
そうでなければ、注文を確定するために使用することはできません
私はそれを機能させました:D
return (this.id > bk.id ) ? -1: (this.id < bk.id) ? 1:0 ;
これは私が望んでいたように機能しますが、あなたの返事に感謝します