2015-06-10 29 views
0

我有Kitchen每個Product在我Kitchen有一個到期日期,什麼集合最好實施這個程序?

這是x天創造

x = for wine 3 years 
     for cheese 10 days 
     for eggs 2 days 

詢問應該從Kitchen後,初始化 - 該產品在廚房先到期?

請任何人準備好幫我實施這個或給我一個指導方針?我只是進入Java編程世界的6周,挑戰自我。

+4

'Kitchen'類可以有'Products'列表,每個產品都有一個到期日(天),您將需要購買/製造日期。這很簡單,只需添加一個輔助方法,將購買/製造日期提前到期。在你的產品上實現可比較的,你可以得到一個有序列表 –

回答

7

最合適的數據結構是一個PriorityQueue,Comparator類,它按截止日期訂購Product對象。

如果你想要一個更通用的類,那麼TreeSet(具有相同的比較器類)將完成這項工作。 (但是有一個障礙,你的比較器需要一個平局,以便兩個具有相同截止日期的不同Product對象不會被視爲相等,如果你不這樣做,則其中一個Product對象將被視爲複製和不添加到集合。)

+0

我如何使用PriorityQueue與比較器? – Phyisse

+1

首先閱讀我給你的javadoc鏈接。 –

+0

好的。我現在正在使用javadoc。 – Phyisse

0

爲此,您可以在幾個方面,但最簡單的將是

1)Kitchen類可以有Products列表中的每個產品都有一個到期時間(天)您需要購買/製造日期。

2)在產品上添加一個輔助方法,該方法在購買/製造日期到期時間之前滾動。

3)實施對你的產品相媲美,你可以得到一個有序列表

你可以找到如何實現一個例子可比here

編輯

如果你想不僅僅是按期到期;考慮使用Visitor pattern以最少數量檢索產品等其他信息。

0

像你解釋youself -

  1. 產品將包含該屬性失效日期的類。
  2. 廚房將是一個包含產品ArrayList的類。
  3. 然後,您將有一個函數查詢,該查詢將遍歷列表中的所有產品,並以最短過期日期返回該產品。

產品類 -

class Product { 
    private int daysTillExpiration = 0; 
    public int getDaysTillExpiration() { 
     return daysTillExpiration; 
    } 
    public void setDaysTillExpiration(int daysTillExpiration) { 
     this.daysTillExpiration = daysTillExpiration; 
    } 
} 

廚房類 -

class Kitchen { 
    private ArrayList<Product> products; 
    public Product inquire() { 
     int min = products.get(0).getDaysTillExpiration(); 
     Product res = products.get(0); 
     for(Product prod : products) { 
      if(prod.getDaysTillExpiration() < min) { 
       min = prod.getDaysTillExpiration(); 
       res = prod; 
      } 
     } 
     return res; 
    } 
} 
+0

感謝您的粗略草圖。我已經創建了不同的類...只需要實現一個方法,然後我很困惑 – Phyisse

+0

我做了這個代碼的測試類,但沒有得到它的權利。你能幫助我參加考試嗎? – Phyisse

+0

確定什麼是測試課程? –

0

我假設你正在做的事情是建立一個廚房對象,然後要創建食品和將它們添加到您的已經創建了廚房對象。

「將它們添加到您的廚房」部分是您可以使用集合來存儲數據的位置。

List<Product> list = new ArrayList<Product>(); 

產品只是一個接口,允許您輕鬆地將項目添加到集合,然後您可以獲取集合並遍歷元素。

如果你不明白這一點,Google爲什麼/如何使用數組列表,如何查找泛型(https://docs.oracle.com/javase/tutorial/java/generics/why.html),然後Google如何從類中獲取對象(來自廚房類的ArrayList),然後Google如何迭代ArrayList。

相關問題