当前位置: 首页 > 知识库问答 >
问题:

Java compareTo方法。学生。compareTo方法应返回

百里修真
2023-03-14

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

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

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

这是另一个代码。我想知道我是否做对了

public int compareTo(Student){
    String studentinfo=(this.firstName + this.lastName);
String studentinfo2=(s1.firstName + s1.lastName);
int comparison =studentinfo.compareTo(studentinfo2);
return comparison;
}

共有1个答案

郭元凯
2023-03-14

这太复杂了。。。

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

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

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

Guava有一个很好的实用程序类:

@Override
public int compareTo(final Student other)
{
    return ComparisonChain.start()
        .compare(firstName, other.firstName)
        .compare(lastName, other.lastName)
        .result();
}
 类似资料:
  • 问题内容: 在oracles 网站上的Java API中:“ compareTo返回:”如果参数字符串等于此字符串,则值为0;否则为0。如果此字符串在字典上小于字符串参数,则小于0的值;如果该字符串在字典上大于字符串参数,则该值大于0。 这是一个if语句: 由于字符串a在字典上较大,因此返回true。 我的问题是,compareTo总是返回0、1或-1吗?还是返回字符串大于或小于字符串参数的实际

  • 当实现Comparable接口并重写compareTo方法时, 第三行,我意识到当我重写它时,我可以使用compareTo,它会自动按照自然顺序进行比较。但是在可比较的界面中,它不是一个抽象的方法。没有定义它,它还可以比较吗?还有,为什么我不需要使用super关键字来区分这个比较。

  • 本文向大家介绍Java字符串compareTo()方法,包括了Java字符串compareTo()方法的使用技巧和注意事项,需要的朋友参考一下 您可以使用方法或,方法或或==运算符比较字符串。下面的示例演示如何在Java中初始化和比较字符串。 示例 输出结果

  • 问题内容: 我正在编写一个类,该类将一堆银行帐户放入数组列表中,并根据其帐号进行排序。我写的方法如下: 在我的主要方法中,是数组列表的变量。当我尝试执行操作时无法执行此操作。它给我一个错误,说出诸如“无法从参数实例化,因为实际参数和形式参数的长度不同”和“推断的类型不符合声明的边界”之类的错误。我以为这是由于我没有重写方法,但是当我尝试这样做时,它说“方法不会重写或实现超类型的方法”。我不明白问题

  • 问题内容: 常见问题:在Java中实现默认方法的覆盖时,与仅将已实现的方法与将独立逻辑写入equals方法相比,我应该担心什么?我注意到有人在另一个问题中提及,该问题返回false而抛出。是什么使这些不一致的结果成为理想的功能? 采样方法: 编辑: 引用可比文档 当且仅当e1.compareTo(e2)== 0对于C类的每个e1和e2具有与e1.equals(e2)相同的布尔值时,才可以认为C类的