我想基于布尔值对对象进行排序,并且想在错误值之前对真实值进行排序。
compareTo的以下哪些实现更易读?
使用-1更改默认行为
public class Example implements Comparable<Example>{
Boolean isOk;
public int compareTo(Example o) {
return -1 * this.isOk.compareTo(o.isOk);
}
}
或交换Boolean#compareTo方法的两面?
public class ExampleTwo implements Comparable<ExampleTwo>{
Boolean isOk;
public int compareTo(ExampleTwo o) {
return o.isOk.compareTo(this.isOk);
}
}
最佳答案
第一种形式是完全错误的-因为如果compareTo
返回Integer.MIN_VALUE
,它将尝试取反-并再次导致Integer.MIN_VALUE
。
最简单的解决方法是使用第二个代码段中的代码。
另一方面:
isOk
为空,则两者都可能失败Boolean.compareTo
可能永远不会返回Integer.MIN_VALUE
。但我不会依靠它。 关于java - compareTo方法的哪种用法更容易理解?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3084115/