我想按多个字段对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,这意味着我无法一次保留这两个函数。 有什么解决办法吗?我正在考虑制作一个扩展上一堂课的新课,但是我不确定是否有必要。