在Java中将LinkedList与多个字符串进行比较

时间:2013-02-11 18:04:42

标签: java sorting comparator

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

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

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

任何人都可以快速实施如何做到这一点吗?如果我使用Compartor界面,我怎么能告诉它哪个字符串字段按列表排序?我的研究也引导我到Collat​​or,我想知道这是否有用。

感谢任何帮助。

2 个答案:

答案 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> {
  ...
}