Collection<BasePerson>
があります。BasePersonは共通プロパティを共有するabstract
クラスです。抽象コレクションを実装クラスでどのようにソートするか?
abstract class BasePerson {
String name;
}
class Person extends BasePerson {
}
class Employee extends BasePerson {
int id;
}
種類によってコレクションを並べ替えることはできますか?私はいずれかPerson
をname
と "非人"のクラスの上にソートする必要があります。どのように私は、このようなComparator<Person>
を作成することができます
xava (persons before employees)
tom,30 (id should have a higher weight than name comparison)
anna,31
:
#name;id
xava (Person)
anna,31 (Employee)
tom,30 (Employee)
出力:
Employee
は、その人自身がid
で最初にソートする必要があり、その後name
入力によるオブジェクト?
new Comparator<BasePerson>() {
@Override
public int compare(BasePerson p1, BasePerson p2) {
if (p1 instanceof Person) {
if (p2 instanceof Person) {
return p1.getName().compareTo(p2.getName());
}
return 1;
} else if (p2 instanceof Person) {
return -1;
}
return 0;
}
}
何か試しましたか? –
はい、インスタンスに基づく比較部品をコンパレータに追加する方法はわかりません。 – membersound
あなたが試したことを表示 – Jens