Java - 从父类(super class)的ArrayList中排序出子类

标签 java sorting inheritance arraylist super

我有一个 ArrayList,其中包含父类(super class)的对象和一些子类对象。我们将它们称为 subclass1 和 subclass2。

有没有一种方法可以让我通过 ArrayList 来辨别哪些对象是 SuperClass、subclass1 和 subclass2。这样我就可以将它们放入ArrayList和ArrayList中。

这是一个过于简化的版本,但它演示了我希望做什么。

    public class food{
    private String name;
    public food(String name){
        this.name = name;
    }
}   

public class pudding extends food{
    public pudding(String name){
        super(name);
    }
}

public class breakfast extends food{
    public breakfast(String name){
        super(name);
    }
}

public static void main(String args[]){
    ArrayList<food> foods = new ArrayList();

    foods.add(new food("Sausage"));
    foods.add(new food("Bacon"));
    foods.add(new pudding("cake"));
    foods.add(new breakfast("toast"));
    foods.add(new pudding("sponge"));
    foods.add(new food("Rice"));
    foods.add(new breakfast("eggs"));

    ArrayList<pudding> puds = new ArrayList();
    ArrayList<breakfast> wakeupjuices = new ArrayList();

    for(food f : foods){
        //if(f is pudding){puds.add(f);}
        //else if(f is breakfast){wakeupjuices.add(f);}
    }

}

最佳答案

您可以使用 instanceof 关键字检查所需的类型,如下所示:

for (food f : foods)
{
    if (f instanceof pudding)
        puds.add(f);
    else if (f instanceof breakfast)
        wakeupjuices.add(f);
}

关于Java - 从父类(super class)的ArrayList中排序出子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28675827/

相关文章:

java - 让后台服务始终运行并且不会自杀或系统破坏它

Netbeans 上的 java.sql.SQLException : Parameter index out of range (5 > number of parameters, 是 4)

matlab - Matlab中的嵌套双重排序

c# - 无法在 LINQ C# 中排序和删除重复项

java - 每个子类继承关系表 : How to query against the Parent class without loading any subclass ? ?? ( hibernate )

java - java中将两个变量包装到一个包装类中

java - Java 递归暴力迷宫求解器

Java:如何在每次插入元素时对数组进行排序

inheritance - 使Maven聚合器pom将属性注入(inject)模块poms中的可行性(不使用继承)

基类构造函数中的 C++ 引用