我有Kitchen
每個Product
在我Kitchen
有一個到期日期,什麼集合最好實施這個程序?
這是x
天創造
x = for wine 3 years
for cheese 10 days
for eggs 2 days
詢問應該從Kitchen
後,初始化 - 該產品在廚房先到期?
請任何人準備好幫我實施這個或給我一個指導方針?我只是進入Java編程世界的6周,挑戰自我。
我有Kitchen
每個Product
在我Kitchen
有一個到期日期,什麼集合最好實施這個程序?
這是x
天創造
x = for wine 3 years
for cheese 10 days
for eggs 2 days
詢問應該從Kitchen
後,初始化 - 該產品在廚房先到期?
請任何人準備好幫我實施這個或給我一個指導方針?我只是進入Java編程世界的6周,挑戰自我。
最合適的數據結構是一個PriorityQueue
,Comparator
類,它按截止日期訂購Product
對象。
如果你想要一個更通用的類,那麼TreeSet
(具有相同的比較器類)將完成這項工作。 (但是有一個障礙,你的比較器需要一個平局,以便兩個具有相同截止日期的不同Product
對象不會被視爲相等,如果你不這樣做,則其中一個Product
對象將被視爲複製和不添加到集合。)
爲此,您可以在幾個方面,但最簡單的將是
1)Kitchen
類可以有Products
列表中的每個產品都有一個到期時間(天)您需要購買/製造日期。
2)在產品上添加一個輔助方法,該方法在購買/製造日期到期時間之前滾動。
3)實施對你的產品相媲美,你可以得到一個有序列表
你可以找到如何實現一個例子可比here
編輯
如果你想不僅僅是按期到期;考慮使用Visitor pattern以最少數量檢索產品等其他信息。
像你解釋youself -
產品類 -
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;
}
}
我假設你正在做的事情是建立一個廚房對象,然後要創建食品和將它們添加到您的已經創建了廚房對象。
「將它們添加到您的廚房」部分是您可以使用集合來存儲數據的位置。
List<Product> list = new ArrayList<Product>();
產品只是一個接口,允許您輕鬆地將項目添加到集合,然後您可以獲取集合並遍歷元素。
如果你不明白這一點,Google爲什麼/如何使用數組列表,如何查找泛型(https://docs.oracle.com/javase/tutorial/java/generics/why.html),然後Google如何從類中獲取對象(來自廚房類的ArrayList),然後Google如何迭代ArrayList。
'Kitchen'類可以有'Products'列表,每個產品都有一個到期日(天),您將需要購買/製造日期。這很簡單,只需添加一個輔助方法,將購買/製造日期提前到期。在你的產品上實現可比較的,你可以得到一個有序列表 –