实现自定义compareTo

Anj*_*waj 6 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Boh*_*ian 15

是的,但首先您应该键入您正在实施的Comparable接口.这是它应该是什么样子:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

注意如何使用类型化接口Comparable<Student>而不是原始类型Comparable,不需要强制转换.


Pra*_*kar 3

是的,可以使用Comparator接口compare方法比较基于不同排序顺序的两个对象。

您需要创建一个排序序列类。使用比较器对用户定义的对象进行排序