使用compareTo比较多个ArrayList字段

时间:2019-04-04 18:43:06

标签: java comparator

我想按多个字段对ArrayList进行排序(取决于方法)。它具有3个字段(2x字符串,1x int ID)。按字符串排序可以正常工作:

@Override
public int compareTo(Object arg0) {
    TStudent student = (TStudent) arg0;
    return this.surname.compareTo(student.surname);
}

借助此功能,我可以轻松地对姓名和姓氏进行排序:

public TStudent[] getStudentsSortedBySurname() {
    TStudent[] result = new TStudent[students.size()];

    students.toArray(result);

    Arrays.sort(result, new Comparator<TStudent>(){
        @Override
        public int compare(TStudent o1, TStudent o2) {
            return o1.getSurname().compareTo(o2.getSurname());
        }
    });
    return result;
}   

Internet表示我需要使用compareTo来对任何内容进行排序(至少在ArrayList不简单时)。我已经使一些工作函数按int字段(ID)对其进行了排序,但是我需要再次重写compareTo,这意味着我无法一次保留这两个函数。 有什么解决办法吗?我正在考虑制作一个扩展上一堂课的新课,但是我不确定是否有必要。

0 个答案:

没有答案