假设我有一个学生名单:fx.erl
。学生班看起来像这样:
ArrayList<Student> student = new ArrayList<>();
我想按名称排序该列表,但如果名称相同,我想在年龄之后对其进行排序。我怎么能用Java做到这一点。
有了这个,我可以按名称排序:
public class Student {
String name;
int age;
String hobby;
//getter and Setter methods below
}
因此,如果它们具有相同的名称,我怎样才能在年龄之后对其进行排序?
最后,我想对public class MyComparator implements Comparator<Student>{
@Override
public int compare(Student o1, Student o2) {
if(o1.getName() > o2.getName()){
return 1;
}
else if(o1.getName() < o2.getName())
{
return -1;
}
else{
return 0;
}
}
}
进行排序。
答案 0 :(得分:3)
这应该有效:
dt <- data.table(category=c("A","A","A","B","B","C"))
dt2 <- dt
dt$count <- nrow(dt2[dt2$category == dt$category])
您还可以public class StudentsComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
final int nameComparison = s1.getName().compareToIgnoreCase(s2.getName());
if (nameComparison != 0) {
return nameComparison;
}
return Integer.compare(s1.getAge(), s2.getAge());
}
}
进行比较:
Student