我有一个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