Java 整理compareTo方法中的if/else语句

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,则代码可以缩短很多。有关如何实

这是一个类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;
 }