假设我有 3 个类(乘客、飞行员、空姐),它们继承自一个名为 Persons 的抽象类,并且在一个 Persons 数组中,我从已定义的 3 个类中保存了许多这些对象,但是我想按以下顺序对 Person 数组内的这些对象进行排序:
-Passenger 类中的所有对象
-Pilot 类中的所有对象
-Stewardess 类中的所有对象
有没有办法在没有ArrayList的情况下实现这一点?
最佳答案
Arrays.sort(personArray, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
int person1Index = getOrderIndex(p1);
int person2Index = getOrderIndex(p2);
if (person1Index < person2Index) {
return -1;
} else if (person1Index > person2Index) {
return 1;
} else {
return 0;
}
}
private int getOrderIndex(Person p) {
if (p == null) {
return 0;
} else if (p instanceof Passenger) {
return 1;
} else if (p instanceof Pilot) {
return 2;
} else if (p instanceof Stewardess) {
return 3;
} else {
throw new RuntimeException("Unexpected person type: " + p.getClass().getName());
}
}
});
关于java - 对多态数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30929005/