小编典典

如何编写比较对象的compareTo方法?

java

我正在学习数组,基本上我有一个可以收集姓氏,名字和分数的数组。

我需要编写一个compareTo将姓氏与名字进行比较的方法,以便可以按姓氏开头的字母顺序对列表进行排序,然后,如果两个人的姓氏相同,则将对姓氏进行排序。

我很困惑,因为我书中的所有信息都是在比较数字,而不是对象和字符串。

到目前为止,这是我编写的代码。我知道这是错误的,但至少可以解释我在做什么:

public int compare(Object obj) // creating a method to compare 
{   
    Student s = (Student) obj; // creating a student object

    // I guess here I'm telling it to compare the last names?
    int studentCompare = this.lastName.compareTo(s.getLastName());

    if (studentCompare != 0)
        return studentCompare;
    else 
    {
        if (this.getLastName() < s.getLastName())
            return - 1;

        if (this.getLastName() > s.getLastName())
            return 1;
    }
    return 0;
}

我知道<>符号是错误的,但是就像我说的那样,我的书仅向您展示如何使用compareTo


阅读 312

收藏
2020-09-08

共1个答案

小编典典

这是比较字符串的正确方法:

int studentCompare = this.lastName.compareTo(s.getLastName());

这甚至不会编译:

if (this.getLastName() < s.getLastName())

使用 if (this.getLastName().compareTo(s.getLastName()) < 0)代替。

因此,要比较拳头/姓氏顺序,您需要:

int d = getFirstName().compareTo(s.getFirstName());
if (d == 0)
    d = getLastName().compareTo(s.getLastName());
return d;
2020-09-08