2016-10-10 147 views
2

我有一個名爲例如冰箱Java新的ArrayList對象myList

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

一個簡單的解釋: 因爲我要保持我的冰箱組織我希望把我的食物放進單獨的抽屜。 我已經有類肉,水果和麪包。

我掙扎的一點是創建新的ArrayList的圖片不同的抽屜。

我的目標是讓冰箱列出父母名單和肉類,水果,麪包作爲此列表的子女。

冰箱(家長)

---肉(兒童)

---果(兒童)

---麪包(兒童)

待辦事項你有什麼想法如何實現這一點? 我很高興的任何幫助

編輯: 我想要添加到thesublists包含的信息如String obj.name的對象;雙重obj.weight; double obj.price;我想將對象添加到子列表中,並能夠再次讀取子列表。

+1

你可以爲每種類型的食物創建一個'ArrayList',然後使'fridge'成爲'ArrayList'的'ArrayList'。 –

+0

正如@SusannahPotts所說,你的孩子必須是冰箱內的ArrayLists –

+1

你應該爲每種食物製作一個'ArrayList',然後爲每種食物製作一個'TreeMap',包含這些ArrayLists。 'Map > fridge = new TreeMap <>()'。 – coladict

回答

6

「冰箱」不應該是一個簡單的ArrayList,因爲它需要有自己更復雜的狀態和行爲。相反,它應該是一個完整的類,應該包含3個(或更多)ArrayList:meatList,fruitList和breadList,以及將項目放入每個列表的方法,以及檢索項目的方法和打印方法或顯示項目。

同樣,食物可以有肉類,水果和麪包的子類(儘管每個好家務,不應該把麪包放入冰箱 - 它會導致結露和皮膚s))。

+1

請注意,如果應該有一種方法來按順序迭代它的內容,那麼該類可以實現'List';或者如果應該有一種方法來迭代它的內容訂購 – Aaron

+1

@Aaron:或更好,實現Iterable - 一個更簡單的接口,並允許迭代所有內容。 –

+0

你說得對,那似乎更合適 – Aaron

0

你正在讓你的「精神」模型出錯。 A 冰箱更多而不僅僅是一個包含其他列表的列表。

想象一下你廚房裏的「真正的冰箱」。除了一些列表(按內容排序)還有更多內容!

因此,您應該先嚐試找出自己心智模型中「冰箱」的用途。應該爲該類的用戶提供哪種行爲(接口)?

例如:冰箱是否通過「type」知道其內容是否真的相關?或者更重要的是該冰箱的物品是如何進行物理訂購的?

所以,除了Hovercraft的出色答案之外,您可能想要更進一步,以便真正定義您的程序中使用的術語應該是

+0

不知道是誰投了票,因爲你的回答是正確的。 1+ –

+0

告訴初學者「你做錯了」,卻沒有告訴他們如何做正確的做法沒有幫助。 – coladict

+0

@coladict猜猜是什麼:我已經在更新中解決了這個問題。 – GhostCat

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 
} 

然後你必須再次一些選擇,比如爲每個類型的類(肉類,麪包等),或者只是讓食品的字段「類型」,它描述了它是什麼。它高度依賴於你的「心理模型」。