对象myList的Java新ArrayList

时间:2016-10-10 14:51:29

标签: java arraylist extends

我有一个名为例如的ArrayList冰箱

List<Food> fridge = new ArrayList<Food>();

一个简单的解释: 因为我想让我的冰箱井井有条,我想把我的食物放进单独的抽屉里。 我已经有了肉类,水果和面包。

我正在努力的目的是创建新的ArrayList,它描绘了不同的抽屉。

我的目标是让冰箱列出父母名单,肉类,水果,面包作为此列表的孩子。

  

冰箱(父母)

     

---肉(儿童)

     

---水果(儿童)

     

---面包(儿童)

您有什么想法如何实现这一点? 我很高兴得到任何帮助

修改: 我想要添加到子列表的对象包含诸如String obj.name之类的信息;双重对象; double obj.price;我想将对象添加到子列表中,并能够再次读取子列表。

3 个答案:

答案 0 :(得分:6)

“fridge”不应该是一个简单的ArrayList,因为它需要有自己更复杂的状态和行为。相反,它应该是一个完整的类,应该包含3个(或更多)ArrayLists:meatList,fruitList和breadList,以及将项目放入每个列表的方法,以及检索项目的方法和打印方法或显示项目。

同样,食物可以有肉类,水果和面包的子类(虽然每个家庭管理,不应该把面包放在冰箱里 - 它会导致结露和闷热)。

答案 1 :(得分:1)

我没有100%得到你想要的东西,但我猜你只想存储你的食物数据。

1)。 只需列出一份清单:

 ArrayList<ArrayList<Food>> fridge;

每个内部列表都有一个抽屉。肉类,水果等将成为食物的一个子类。

2)。 使用键作为抽屉的“名称”制作地图

 HashMap<String, ArrayList<Food>> fridge;

通过它,您可以轻松获得“抽屉”内容。然而,这并没有太大的改变。

3。)

制作一个存储所有东西的冰箱课程。而且,由于冰箱可以拥有的不仅仅是食物,还可以创建一个界面来定义物品可以存储的属性。

interface Storable{
   String getName(); int getId(); String getType(); void use();
     }....//whatever everything which will be stored has.
class Fridge{ 
    HashMap<String, ArrayList<Storable>> contents;
    void add(Storable food){
        this.contents.put(food.getType, food); //or instead of #getType use the class of the food.
  }

然后你的食物,肉类等:

class Food implements Storable{
     //implement the inherited Methods 
 }

然后你又有了一些选择,比如为每种类型制作一个类(肉,面包等),或者只在食物中制作一个描述它是什么的字段“类型”。这在很大程度上取决于你的“心智模式”。

答案 2 :(得分:0)

你的“心理”模型错了。 冰箱

想象一下厨房里的“真正的冰箱”。除了一些列表(按内容排序)之外,还有更多内容!

因此,您应首先尝试自己计算心智模型中“冰箱”的用途。应该为该类的用户提供哪种行为(界面)?!

示例:冰箱通过“类型”知道其内容是否真的相关?或者更重要的是冰箱中的条目是如何实际订购的?

除了Hovercraft的优秀答案之外,你可能还想退一步,以便在你的程序中真正定义你使用的应该是什么意思