如何在单例类中实现Map?

问题描述:

我的任务是制作一个关于花店的节目。我必须制作一个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

您的单身人士是正确的!您可以在类中创建一个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

有simplier方法可以做到这一点:

  • 添加类PricePerFlower与属性花卉和价格,并把列表作为您的价目表类的属性。

  • 或者只是在您的PriceList类中添加一个Map属性。

地图的实现通常是非常复杂的(至少是有效的)。

如果绝对必须使用这个纲要(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); 

    }}