地图

时间:2016-07-23 11:18:34

标签: java

让类getChoice实现LinkedHashMap。 让方法addCh实现choice.put。 让一些类choice1和choice2扩展类选择并将元素传递给getChoice.map。每次我将一个对象传递给Map时,似乎都不会更新,而是要使用相同的名称再次创建。我需要先将所有元素存储在地图中,然后将它们保存到文件中。我怎样才能做到这一点?我的代码到目前为止。

public class GetChoice{

Map<String, String> choice = new LinkedHashMap<String, String>();

public void addChoice(SomeClass obj1, SomeOtherClass obj2) {

    if (obj2 instanceof Choice1) {
        this.choice.put(obj2.toString(), "choice1");
    } else if (obj2 instanceof Choice2) {
        this.choice.put(obj2.toString(), "choice2");
    } else {
        //sysout not found
    }

    System.out.println("\n" + choice);
}

编辑:我通过将地图声明为静态来处理它,之后@dasblinkenlight提到每次调用都会创建它。 非常感谢你们。

2 个答案:

答案 0 :(得分:1)

  

似乎不会更新,而是要使用相同的名称再次创建

确保您的参数被交叉,因此您使用的是Key obj2

例如:  这样做:

addChoice(1, 11);
addChoice(2, 3.14);
addChoice(3, 45);
addChoice(1111, 45);
addChoice(111111, 45);
addChoice(1234, 45);

将在列表中生成 3个元素 ... 11,pi和45,无论多少 您使用的 obj1 不同类型..

答案 1 :(得分:1)

choice map是GetChoice对象的实例字段。每次创建新GetChoice时,都会创建一个没有数据的全新地图。

为了在addChoice的调用中保留地图中的数据,您需要创建一次GetChoice对象,然后多次在同一个对象上调用addChoice