2016-11-17 82 views
1

我的任務是製作一個關於花店的節目。我必須製作一個PriceList,這是一個單身人士。我還有下面給出的測試功能主:如何在單例類中實現Map?

public static void main(String[] args) { 
PriceList pl = PriceList.getInstance(); 
pl.put("rose", 10.0); 
pl.put("lilac", 12.0); 
pl.put("peony", 8.0); 

尋找這些pl.puts(),我決定實現類價格表地圖界面,但我不知道究竟該怎麼做,當我只有這個類的一個對象,它必須是一個Map。我已經寫了很多,不知道下一步該怎麼做:

public class PriceList <String, Double> implements Map <String, Double> { 

private static PriceList instance = null; 

protected PriceList() {} 

public static PriceList getInstance() { 
    if (instance == null) 
     instance = new PriceList(); 
    return instance; 
} 

public void put(String string, double d) { 
    // TODO Auto-generated method stub 

}} 

在此先感謝您的幫助!

+0

聽起來像是功課...什麼是正是這個問題?你有沒有測試過它? – TungstenX

+0

是的,這是一個家庭作業,但它比這更大。我有一個測試課FloristsTest,我不能改變,我必須實施必要的課程才能使其工作。我還沒有測試過 – yeti

+0

人們並不熱衷於幫助這裏的作業 - 這是給你研究,但除此之外,BrunoDM給了一個很好的答案。 – TungstenX

回答

2

您的單身人士是正確的!您可以在類中創建一個Map屬性,並將put方法委託給maps的輸入方法,而不是實現地圖接口。就拿這個例子:

public class PriceList{ 

    private Map<String, Double> map = new HashMap<String, Double>(); 

    private static PriceList instance = null; 

    private PriceList() {} 

    public static PriceList getInstance() { 
     if (instance == null) 
      instance = new PriceList(); 
     return instance; 
    } 

    public void put(String string, double d) { 
     map.put(string,double);  
    } 
} 
+0

我以爲我必須創建一個單例類,並且這個類的唯一對象是一個Map。這個解決方案我更方便,謝謝! – yeti

0

有simplier方法可以做到這一點:

  • 添加類PricePerFlower與屬性花卉和價格,並把列表作爲您的價目表類的屬性。

  • 或者只是在您的PriceList類中添加一個Map屬性。

0

地圖的實現通常是非常複雜的(至少是有效的)。

如果絕對必須使用這個綱要(PriceList爲單身和實施Map接口),我會建議使用引擎蓋下現有的Map實現:

public class PriceList <String, Double> implements Map <String, Double> { 

    private Map<String, Double> map = new HashMap<>(); 
    private static PriceList instance = null; 

    protected PriceList() {} 

    public static PriceList getInstance() { 
     if (instance == null) 
      instance = new PriceList(); 
     return instance; 
    } 

    public void put(String string, double d) { 
     map.put(string, d); 

    }}