我有一個Collection<BasePerson>
,其中BasePerson是abstract
類共享公共屬性。如何通過實現類對抽象集合進行排序?
abstract class BasePerson {
String name;
}
class Person extends BasePerson {
}
class Employee extends BasePerson {
int id;
}
如何按類型對集合進行排序?我想要任何Person
排序name
和任何「非人」類之上。
的Employee
對象自理應由id
先進行排序,然後通過name
輸入:
#name;id
xava (Person)
anna,31 (Employee)
tom,30 (Employee)
輸出:
xava (persons before employees)
tom,30 (id should have a higher weight than name comparison)
anna,31
如何創建這樣一個Comparator<Person>
?
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