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

时间:2014-03-10 23:15:46

标签: java comparator anonymous-class anonymous-methods

我需要 在我的班级学生

中实现静态方法
public static Comparator<Student> getCompByName()

返回Student的新比较器对象,用于比较2个Students对象 通过属性'name'。

我创造了我认为正确的东西,但我不确定它是否会像上面给出的要求那样起作用。我对比较器非常新,并且很难与他们合作。

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;
}  

仅仅从阅读上述要求,我不确定我应该比较'名称',无论是长度,如果它们是相等的等等。所以我投入了一个整数比较。对于任何人来说,如果我已经正确地完成了这项工作,那么它是否清楚了?如果没有,任何人都可以让我知道我需要做什么/改变吗?

2 个答案:

答案 0 :(得分:3)

查看documentationcompare()方法应该用于确定两个学生的顺序(在这里,您希望按字母顺序执行)。如果要检查是否相等,可以覆盖equals()的{​​{1}}方法。对于字符串,您可以使用现有方法来比较学生的姓名字段。

Comparator

答案 1 :(得分:2)

假设您的'name'属性是一个字符串,您可以使用

直接比较名称
s1.name.compareTo(s2.name)