Java 整理compareTo方法中的if/else语句
这是一个类Employee的方法。它比较employee的两个对象,其中包含四个变量:id(int)、name、phone和job title(所有字符串) 代码工作得很好,但我知道它已经变得相当像箭头了,而且有点复杂。有没有人对清理这组if/else语句有什么建议 编辑:我知道在ID之后继续比较似乎有悖常理,这在逻辑上是唯一的,但还是继续吧有关如何实现多级项目顺序的示例,请参阅 我认为,如果只返回compareTo调用的结果,而不是使用if-else并返回0/1,则代码可以缩短很多。有关如何实现多级项目顺序的示例,请参阅Java 整理compareTo方法中的if/else语句,java,if-statement,Java,If Statement,这是一个类Employee的方法。它比较employee的两个对象,其中包含四个变量:id(int)、name、phone和job title(所有字符串) 代码工作得很好,但我知道它已经变得相当像箭头了,而且有点复杂。有没有人对清理这组if/else语句有什么建议 编辑:我知道在ID之后继续比较似乎有悖常理,这在逻辑上是唯一的,但还是继续吧有关如何实现多级项目顺序的示例,请参阅 我认为,如果只返回compareTo调用的结果,而不是使用if-else并返回0/1,则代码可以缩短很多。有关如何实
我认为,如果只返回compareTo调用的结果,而不是使用if-else并返回0/1,那么代码可以缩短很多。似乎所有检查都必须是==0才能返回0。如果其中一个大于0,则返回1,否则返回-1 因此:
似乎所有的检查都必须是==0,才能返回0。如果其中一个大于0,则返回1,否则返回-1 因此:
我想我会选择你的答案和你发布的链接,因为我认为这是最干净的实现。我想我会选择你的答案和你发布的链接,因为我认为这是最干净的实现。
public int compareTo(Employee other) {
if (this.id == other.id) {
if (this.name.compareTo(other.name) == 0) {
if (this.phoneNumber.compareTo(other.phoneNumber) == 0) {
if (this.jobTitle.compareTo(other.jobTitle) == 0)
return 0;
else if (this.jobTitle.compareTo(other.jobTitle) > 0)
return 1;
else
return -1;
}
else if (this.phoneNumber.compareTo(other.phoneNumber) > 0)
return 1;
else
return -1;
}
else if (this.name.compareTo(other.name) > 0)
return 1;
else
return -1;
}
else if (this.id > other.id)
return 1;
else
return -1;
}
if (this.id == other.id &&
this.name.compareTo(other.name) == 0 &&
this.jobTitle.compareTo(other.jobTitle) == 0 &&
this.phoneNumber.compareTo(other.phoneNumber) == 0 ) {
return 0;
} else if (this.id > other.id ||
(this.name.compareTo(other.name) > 0 ||
this.jobTitle.compareTo(other.jobTitle) > 0 ||
this.phoneNumber.compareTo(other.phoneNumber) > 0) {
return 1;
} else {
return -1;
}