如何在单例类中实现Map?

时间:2016-11-17 12:44:34

标签: java singleton

我的任务是制作一个关于花店的计划。我必须创建一个类PriceList,它是一个单例。我还有一个给定的测试函数main:

var moreText = document.getElementsByClassName('more')[0];
var newTitle = 'Using HTML5 custom data-* attributes';
moreText.setAttribute('title',newTitle);

看看这些pl.puts(),我决定在类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);

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

你的单身人士是对的!您可以在类中创建Map属性,并将put方法委托给maps" put方法,而不是实现map接口。举个例子:

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);       
    }
}

答案 1 :(得分:0)

有简单的方法可以做到这一点:

  • 添加具有属性Flower和price的Class PricePerFlower,并将List作为属性放入PriceList类。

  • 或者只是在PriceList类中添加Map属性。

答案 2 :(得分: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);

    }}

答案 3 :(得分:0)

public class MyContext {
    private static MyContext ourInstance = null;
    private HashMap<String, String> translatedValue;

    public static MyContext getInstance() {
        if (ourInstance == null)
            ourInstance = new MyContext();
        return ourInstance;
    }

    private MyContext() {
        translatedValue = new HashMap<>();
    }

    public void addTranslatedValue(String title, String value) {
        translatedValue.put(title, value);
    }

    public String getTranslatedValue(String value) {
        return translatedValue.get(value);
    }
}
使用
MyContext myContext = MyContext.getInstance();
myContext.addTranslatedValue("Next", valueTranslated);
System.out.println(myContext.getTranslatedValue("Next"));
结果
valueTranslated