如何实现比较器来比较名称?

Ree*_*iie 5 java anonymous-methods anonymous-class comparator

我需要在我的学生类中实现一个静态方法

public static Comparator<Student> getCompByName()
Run Code Online (Sandbox Code Playgroud)

它为 Student 返回一个新的比较器对象,该对象通过属性“name”比较 2 个 Students 对象。

我创建了我认为正确的东西,但我不确定它是否会像上面给出的要求那样发挥作用。我对比较器很陌生,并且很难使用它们。

public static Comparator<Student> getCompByName()
{

 Comparator comp = new Comparator<Student>(){
     @Override
     public int compare(Student s1, Student s2)
     {
        return Integer.compare(s1.name.length(), s2.name.length());
     }

 };
 return comp;
}  
Run Code Online (Sandbox Code Playgroud)

仅通过阅读上述要求,我不确定我应该比较“名称”的内容,是否是长度,是否相等等等。所以我投入了整数比较。任何人都清楚需要什么以及我是否正确地做到了这一点?如果没有,有人可以让我知道我需要做什么/改变吗?

Joe*_*oel 4

查看文档compare()应该使用该方法来确定两个学生的顺序(在这里,您需要按字母顺序进行)。如果您想检查是否相等,您可以equals()重写Comparator. 对于字符串,您可以使用现有的方法来比较学生的姓名字段。

public static Comparator<Student> getCompByName()
{

    Comparator comp = new Comparator<Student>(){

        @Override
        public int compare(Student s1, Student s2)
        {
            s1.name.compareTo(s2.name)
        }

    };

    return comp;
}
Run Code Online (Sandbox Code Playgroud)