java中的compareTo()方法(学生ID)

时间:2014-07-29 02:23:50

标签: java compareto

学习java并遇到compareTo方法的问题。我尝试了谷歌,但它对我需要的东西没什么帮助。我需要的是什么

// compareTo public int compareTo(Student other) 
// is defined in the Comparable Interface
    // and should compare the student ID's  (they are positive integers).
// Must be able to handle null "other" students. A null student should be
// ordered before any student s so the s.compareTo(null) should be positive.

所以基本上是一个compareTo(),最后这个方法将帮助我根据学生的最低到最高的顺序让我的学生井井有条......我在一堵砖墙上只是需要一些帮助正确的方向

public int compareTo(StudentIF other) {
    // do stuff
    return 0;
}

2 个答案:

答案 0 :(得分:2)

有一个关于实施compareTo() here的好教程。也就是说,在学习如何做一般事情时,我常常看到如何在我的特定用例中实现它 - 所以,在这种情况下,我会想象这样的事情就足够了:

public int compareTo(StudentIF other) {
    if (other == null) {return 1;} //satisfies your null student requirement
    return this.studentId > other.studentId ? 1 : 
                            this.studentId < other.studentId ? -1 : 0;
}
如果compareTo()对象比较小,则预期

other返回正值;如果它比较大,则返回负值,如果它们相等,则返回0。假设您熟悉三元运算符,您将会发现它正在做什么。如果你不是,那么if / else等价物将是:

    public int compareTo(StudentIF other) {
        if (other == null) { return 1; } //satisfies your null student requirement
        if (this.studentId > other.studentId) return 1; 
        else if (this.studentId < other.studentId) return -1; 
        else return 0; //if it's neither smaller nor larger, it must be equal
}

答案 1 :(得分:1)

由于需要compareTo接口:

  

负整数,零或正整数,因为此对象小于,等于或大于指定对象。

加上你对null比较的额外要求,我们可以简单地检查另一个param是否为null,然后进行减法比较。

public int compareTo(StudentIF other) {
    if (other == null) {
        return 1;
    }
    return this.id - other.id;
}