Java 如何重写compareTo()。如果是';有可能
当Java 如何重写compareTo()。如果是';有可能,java,Java,当id是一个整数并且是一个正值时,我的代码工作正常。id是否可能为负值?如何更改代码?以下可能是实现此功能的最简单方法: public int compareTo(Object obj){ Books bk = (Books) bk; return this.id - obj.id; } 您当前的版本几乎是正确的,只是它容易受到整数溢出的影响。以下可能是实现它的最简单方法: public int compareTo(Object obj){ Books bk = (Books
id
是一个整数
并且是一个正值时,我的代码工作正常。id
是否可能为负值?如何更改代码?以下可能是实现此功能的最简单方法:
public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
您当前的版本几乎是正确的,只是它容易受到整数溢出的影响。以下可能是实现它的最简单方法:
public int compareTo(Object obj){
Books bk = (Books) bk;
return this.id - obj.id;
}
您当前的版本几乎是正确的,只是它容易受到整数溢出的影响。当您覆盖
compareTo
时,您可以定义这些问题的答案。它完全取决于您的程序id
是否可能为负值。你必须问自己的问题是“一本书比另一本书大(或小)意味着什么?”。如果答案是哪个id更大的是一本更大的书,那么您的实现是好的,除了一个小错误:
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 Integer.compare(this.id, bk.id);
}
必须能够返回负值。根据
可比规范,如果
public int compareTo(Object obj){
Books bk = (Books) obj;
return this.id - bk.id;
}
然后
b.与(a)相比<0
否则,您无法使用compareTo()
建立订单您必须能够返回负值。根据可比规范,如果
public int compareTo(Object obj){
Books bk = (Books) obj;
return this.id - bk.id;
}
然后
b.与(a)相比<0
否则,您无法使用compareTo()
来建立订单我成功了:D
return(this.id>bk.id)-1:(this.id
这是我想要的,但谢谢你的回复,我成功了:D
return(this.id>bk.id)-1:(this.id
这正是我想要的,但谢谢你的回复我会使用“goes before”或“goes after”比“Bigger”好,但无论如何+1。我会使用“goes before”或“goes after”比“Bigger”好,但无论如何+1。你在使用Java 1.4吗Comparable
是从Java5开始泛化的。您使用的是Java1.4吗<代码>Comparable
是从Java 5开始泛化的。您的原始实现与此一样有效。@SJuan76不完全有效。如果id可能非常大,减法可能会给出不同的结果,可能由于环绕而不正确。例如,Integer.MAX_值(-3)为负数。进行比较总是有效的。您的原始实现与此一样有效。@SJuan76不完全有效。如果id可能非常大,减法可能会给出不同的结果,可能由于环绕而不正确。例如,Integer.MAX_值(-3)为负数。进行比较总是有效的。