2012-10-16 63 views
0

我将一些数据存储在哈希映射中。现在我想根据用户输入修改与某个键相关的值,并以这种方式永久存储它们。根据用户反馈修改代码

为了让自己更清楚,我有这样一个HashMap:

public static HashMap<String,Integer> mymap= new HashMap<String,Integer>(); 
mymap.put("Hi",2); 
mymap.put("Hello",3); 

我会反馈用户的一些用户,如果想那时我会的,比方说,店里4对你好。我希望保存这些更改以备将来参考。

我听说过关于Reflection API,但不确定是否能达到目的。

+2

修改代码并不是真的有必要,是吗?你只是想修改地图中包含的数据。这比修改代码更直接。 –

+0

我不遵循 - 你问如何将地图存储到磁盘?或如何修改地图? 'Map.put()'提供了这一点 - 它将覆盖旧的值。 – amit

+0

保存在哪里?记忆?文件系统?数据库?对于其中的每一个,无论如何你都不需要反思! – adarshr

回答

1

反射API允许用户操作/访问其他方式无法访问的数据 - 或者编译时未知的类上的某些数据。

在这里,它真的不需要。您只需要将put()元素放入地图中,它将从您刚刚插入的键(如果它已经存在)中“删除”旧值并将其与新添加的值相关联(键)。

所以,基本上 - 所有你需要做的是myMap.put(key,newValue),并执行Map(当然,假设它是一个正确的)将负责其余的。


如果您想在程序运行之间存储数据 - 您必须将其保存在磁盘上(地图)。为此,您可以使用serialization,或者在某些情况下可以使用Properties
确保在程序启动后从磁盘加载映射,否则将看不到存储的值。

+0

但是,只要我的程序退出这个我用put()方法插入的新值就会丢失! – OneMoreError

+0

所以你想要存储它吗?你的意见不清楚,让我编辑。 – amit

0

只要说,mymap.put(key,value);。它将更新匹配键的值。如果不存在,它将插入一个新的条目,例如

 mymap.put("Hello",4); 

如果您不想为新密钥插入新值,例如World,你可以把支票是这样的:

 if(mymap.containsKey(key)){ 
     mymap.put(key,value); 
     }else{ 
     //no existing key found 
     }