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越大,那么您的实现就很好,除了一个小错误:
public int compareTo(Object obj){
Books bk = (Books) obj;
return this.id - bk.id;
}
必须能够返回一个负值。从Comparable
规范来看,如果
a.compareTo(b) > 0
然后b.compareTo(a) < 0
否则不能使用compareTo()
来建立订单
I make it work:D
return (this.id > bk.id ) ? -1: (this.id < bk.id) ? 1:0 ;
这是我想要的,但感谢您的回复