获取对象的arraylist中的对象的属性

时间:2013-01-22 00:00:55

标签: java oop arraylist

好的,所以我制作了一个名为Food的物体,它具有描述食物(蛋白质(克),卡路里,碳水化合物等)的各种特性。然后我创建了一个名为Foodlist的类,它读取excel表,为电子表格的每一行创建一个新的Food对象(用该行的列中的信息填充对象);然后Foodlist类创建一个ArrayList食物对象。 我现在想要制作ProteinList,这是FoodList的子列表,并且有一种方法可以将所有高蛋白食物分成阵列。 Proteinlist扩展Foodlist,如何访问列表中Food对象的“protein”属性?

这是我的代码被卡住的地方:

    public Food[] groupProtein() {
        for(int i = 0; i < foodList.size(); i++)
        {
            if(foodList.get(i).protein > 6){//HERE IS THE PROBLEM, trying to get the property of the food object at i
                proteinFoods.add(foodList.get(i));
            }
        }

        Food[] temp = new Food[proteinFoods.size()];
        for (int i = 0; i < temp.length; i++) {
            temp[i] = proteinFoods.get(i);
        }

        return temp;
    }

3 个答案:

答案 0 :(得分:0)

public class ProteinList extends FoodList{
    //other stuff...
    public double get(int i){
        return super.get(i).getProtein();
    )
}

这就是你想要的吗?

答案 1 :(得分:0)

如果属性protein在类定义中定义为private,则无法从类外的任何方法访问它。您需要在类中定义一个getter方法

public class Food {
    ...
    public int getProtein() {
        return protein;
    }
    ....
}

因此,您可以从类外的方法中读取值:

foodList.get(i).getProtein()

我假设foodList已正确定义,因此get(i)方法将返回一个Food对象(或者它要返回的任何类)

答案 2 :(得分:0)

如果你的protein财产有一个吸气剂,你的方法可能是:

public Food[] groupProtein() {
    for(Food food : foodList)
    {
        if(food.getProtein() > 6){
            proteinFoods.add(food);
        }
    }

    return proteinFoods.toArray(new Food[0]);
}

我认为proteinFoodsList<Food> ...对吗?