java - 对多态数组进行排序

标签 java arrays sorting polymorphism

假设我有 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/

相关文章:

arrays - 删除不同索引中具有相同成员的列表

java - android 中的可用字体(来自 context.getAssets() )java

java - Spring MVC 转换主体对象

c++ - 在 C++ 中将字符数组转换为整数字符串

python - 如何将 Keras Sequential CNN 的训练数据转换为正确的张量形状?

java - 如何根据两个自定义对象删除列表中的重复项

java - 追加空白字符串的快速方法。

java - IF 语句不起作用

ruby-on-rails - 使用 Ruby 通过嵌套 JSON 对象进行过滤并获取具有特定键的 JSON

powershell - 哈希表和键顺序