我有一个名为例如的ArrayList冰箱
List<Food> fridge = new ArrayList<Food>();
一个简单的解释: 因为我想让我的冰箱井井有条,我想把我的食物放进单独的抽屉里。 我已经有了肉类,水果和面包。
我正在努力的目的是创建新的ArrayList,它描绘了不同的抽屉。
我的目标是让冰箱列出父母名单,肉类,水果,面包作为此列表的孩子。
冰箱(父母)
---肉(儿童)
---水果(儿童)
---面包(儿童)
您有什么想法如何实现这一点? 我很高兴得到任何帮助
修改: 我想要添加到子列表的对象包含诸如String obj.name之类的信息;双重对象; double obj.price;我想将对象添加到子列表中,并能够再次读取子列表。
答案 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的优秀答案之外,你可能还想退一步,以便在你的程序中真正定义你使用的应该是什么意思!