2016-07-23 53 views
1

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

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提到创建的每个电话。 非常感谢你们。

+0

这对我来说不是很清楚你想做什么。你能举一个例子说明你想如何使用'GetChoice'类以及你期望的结果是什么? –

+1

请显示你调用'new GetChoice()'的代码。我在我的回答中假装我知道每次调用addChoice时都会这样做,因为这是您看到的行为的唯一合理解释。 – dasblinkenlight

回答

1

choice地图多少 别样的使用OBJ1 ..是的实例字段GetChoice对象。每当您制作新的GetChoice时,都会创建一个没有数据的全新地图。

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

1

似乎不更新,而是要与同名

为确保您的参数是交叉过来,让您使用作为主要的 OBJ 2再次创造

例如: 执行此操作:

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

会产生3元列表... 11,PI和45,无论