【发布时间】:2014-11-23 16:44:01
【问题描述】:
我需要根据学生人数对班级列表进行排序
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;
}
// ...
}
【问题讨论】:
-
如何实现 class 'Class' 的 compareTo 方法?
-
您不必再次实现
compareTo()。您的Student类已经定义了一个,当您调用Collections.sort()时将使用它。并请重命名class。Class已经是 java 的内置类了。 -
听起来你对比较
Class对象不感兴趣。那么实现Comparable有什么用呢?您最好添加一个公共方法来调用Collections.sort(students) -
但我的 i/p 是 List
classes = new ArrayList ();所以有可能做这样的事情 Collection.sort(classes) 排序是基于学生的rollnumber。 -
I need to sort list of Class based on it's students rollnumber我认为你应该重新构建它?
标签: java sorting collections comparable