java - 实现自定义 compareTo

标签 java compareto

@Override
public int compareTo(Object t) 
{
    if(t instanceof Student)
    {
        Student s = (Student)t;
        return (this.name.compareTo(s.name));
    }
    else
        return -1;
}

这是我的 compareTo 方法实现,用于根据名称比较两个 Student 对象。是否可以根据多个字段(即姓名和年龄)比较两个这样的对象?

最佳答案

是的,但首先您应该键入要实现的 Comparable 接口(interface)。它应该是这样的:

public class Student implements Comparable<Student> {
    private int age;
    private String name;
    @Override
    public int compareTo(Student s) {
        if (name.equals(s.name))
            return age - s.age;
        return name.compareTo(s.name));
    }
}

注意类型化界面如何 Comparable<Student> , 而不是原始类型 Comparable , 无需转换。

关于java - 实现自定义 compareTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757805/

相关文章:

java - 如何级联删除条目而不级联为多对多关系

java - 添加不带命名空间的 SOAP header 元素

java - 使用 Spring 3 和 Tiles 2 对 Web 应用程序进行 Ajax REST 调用

java - CompareTo 预期元素错误

java - Java中的CompareTo函数在这种情况下做什么

java - Intellij IDEA : how to change the organize import feature

java - 在子类的构造函数中抛出异常

java - 为什么 Java 'Comparable' 比仅使用 CompareTo 方法更好?

java - 使用 Comparable 的compareTo 将对象与数组列表中的元素进行比较

java - FindBugs - 如何解决 EQ_COMPARETO_USE_OBJECT_EQUALS