0

私はこのようなカスタムオブジェクトを持っています:

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

その中には、先生の名前、クラス名、部屋番号などのアクセサーがあります。これらはすべて文字列です。そのLinkedListのデータをさまざまなパラメーター(教師名、クラス名、部屋番号など)で表示する必要がある状況に遭遇しました。

誰かがこれを行う方法の簡単な実装を提供できますか?Compartorインターフェイスを使用する場合、リストを並べ替える文字列フィールドをどのように指定できますか?私の研究も私をコレーターに導きました、そして私はこれが役に立つかどうか疑問に思いました。

助けに感謝します。

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 に答える