我需要根据它的学生卷号来排序Class列表
I / P - List<Class> classes = new ArrayList<Class>();
o / p - 基于rollnumber的排序列表
public class Class implements Comparable<Class>{
List<Student> students;
...
@Override
public int compareTo(Class o) {
...
}
}
我想实现Class的compareTo方法,以便它将根据他们的滚动数比较学生 .
public class Student implements Comparable<Student> {
String firstname;
Integer rollnumber;
public int compareTo(Student o1) {
if (this.rollnumber == ((Student) o1).rollnumber)
return 0;
else if ((this.rollnumber) > ((Student) o1).rollnumber)
return 1;
else
return -1;
}
// ...
}
1 回答
在
List
中,项目可以在 multiple 次 . 因此,与0比较的相同Object是未知顺序 . 请改用Set
,只有Set
可以防止重复值 .如果您不想要空值,则应使用
TreeSet
.rollnumber的比较应该是一个自然的顺序,但是
rollnumber
-order不直观,如果我问你谁是第一个学生我希望答案如Max Mustermann
而不是23948234
. 当然,这是一个直观的论证和基于意见的观点,但它就像通常的做法那样自然而然地决定了.2868138_ .可以使用
comparator
实现构造TreeSet
作为构造函数参数,这将更好地满足您的需求 .如果你喜欢DRY,请使用
Integer.compare
.所以我建议: