首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java compareTo方法。student.compareTo方法应该返回

Java compareTo方法。student.compareTo方法应该返回
EN

Stack Overflow用户
提问于 2014-04-05 07:27:27
回答 1查看 549关注 0票数 0

我被要求编写一个student.compareTo方法,如果两个学生的名字和姓氏相同,则该方法应返回0。如果学生的名字按字典顺序排序比传入的要低,那么它应该返回一个负值。如果学生的名字按字典顺序排序比传入的要高,它应该返回一个正值。

到目前为止,这是我的代码。对于负值和正值,应该是固定值还是应该使用compareTo值?

代码语言:javascript
复制
public int compareTo(Student){
int comparison = (this.firstName.compareTo(Student.firstName));
int comparison2 = (this.lastName.compareTo(Student.lastName));

if (comparison == comparison2)
    return 0;
else if ((comparison=0 && comparison2<0) ||(comparison<0 && comparison2=0)
    return -1;
else
    return 1;
}

这是另一个代码。我想知道我做得对不对

代码语言:javascript
复制
public int compareTo(Student){
    String studentinfo=(this.firstName + this.lastName);
String studentinfo2=(s1.firstName + s1.lastName);
int comparison =studentinfo.compareTo(studentinfo2);
return comparison;
}
EN

回答 1

Stack Overflow用户

发布于 2014-04-05 07:30:36

这太复杂了。

链接您的比较;仅当第一个返回0时,运行第二个;如果第二个返回0,则运行第三个;依此类推。

也就是说,返回第一个非零的比较结果,或者返回最后一个非零的比较结果。示例:

代码语言:javascript
复制
@Override
public int compareTo(final Student other)
{
    int ret = firstName.compareTo(other.firstName);
    if (ret != 0) // No need to go further
        return ret;

    // Hypothetic second comparison to do before lastName
    // ret = foo.compareTo(other.foo);
    // if (ret != 0)
    //     return ret;

    // Rinse, repeat...

    // All previous comparisons returned 0, 
    // return the result of the last comparison
    return lastName.compareTo(other.lastName);
}

为此,芭乐有一个nice utility class

代码语言:javascript
复制
@Override
public int compareTo(final Student other)
{
    return ComparisonChain.start()
        .compare(firstName, other.firstName)
        .compare(lastName, other.lastName)
        .result();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22874662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档