我有一个像这样的自定义对象:
Linkedlist<ClassInfo> classes = new LinkedList<ClassInfo>();
在其中,有教师姓名,班级名称,房间号等的访问者。这些都是字符串。我遇到过LinkedList中的数据需要通过不同参数(即教师姓名,班级名称,房间号等)显示的情况。
任何人都可以快速实施如何做到这一点吗?如果我使用Compartor界面,我怎么能告诉它哪个字符串字段按列表排序?我的研究也引导我到Collator,我想知道这是否有用。
感谢任何帮助。
答案 0 :(得分:4)
为每个字段编写不同的Comparator
实现:
Comparator<ClassInfo> CLASS_NAME_COMPARATOR = new Comparator<ClassInfo>() {
public int compare(ClassInfo class1, ClassInfo class2) {
return class1.getClassName().compareTo(class2.getClassName());
}
};
... // implementations for other fields
...然后根据适当的比较器进行排序:
Collections.sort(classes, CLASS_NAME_COMPARATOR);
答案 1 :(得分:1)
您必须为您的集合排序所需的每个订单提供自定义比较器。例如:
class TeacherComparator implements Comparator<ClassInfo> {
public int compare(ClassInfo c1, ClassInfo c2) {
String teacher1 = c1.getTeacher();
String teacher2 = c2.getTeacher();
return teacher1.compareTo(teacher2);
}
}
class ClassNameComparator implements Comparator<ClassInfo> {
...
}