0

我有一个这样的自定义对象:

 Linkedlist<ClassInfo> classes = new LinkedList<ClassInfo>();

其中,有教师姓名、班级名称、房间号等的访问器。这些都是字符串。我遇到了这样一种情况,即 LinkedList 中的数据需要通过不同的参数(即教师姓名、班级名称、房间号等)显示。

任何人都可以提供如何做到这一点的快速实施吗?如果我使用 Compartor 接口,我怎么能告诉它要根据哪个字符串字段对列表进行排序?我的研究也让我找到了 Collat​​or,我想知道这是否有用。

感谢任何帮助。

4

2 回答 2

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);
于 2013-02-11T18:08:15.603 回答
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> {
  ...
}
于 2013-02-11T18:09:06.960 回答