0

我将一些数据存储在哈希图中。现在我想根据用户输入修改与键关联的值,并以这些方式永久存储它们。

为了让自己更清楚,我有一个这样的哈希图:

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

我会从某个用户那里得到用户的反馈,如果他想要的话,我会说,存储 4 来对抗 Hello。我希望保存这些更改以供将来参考。

我听说过Java 中的反射API,但不确定这是否能达到目的。

4

3 回答 3

1

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

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

所以,基本上 - 你需要做的就是myMap.put(key,newValue),并且Map(假设它是一个正确的,当然)的实现将照顾其余的。


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

于 2012-10-16T20:25:10.933 回答
0

Preferences API 使在磁盘上存储少量数据变得容易。它通常用于存储配置数据。它类似于 Windows 注册表。

这是一个介绍:http ://docs.oracle.com/javase/1.4.2/docs/guide/lang/preferences.html

于 2012-10-16T20:38:48.983 回答
0

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

      mymap.put("Hello",4);

如果您不想为新键插入新值,例如World,您可以进行如下检查:

      if(mymap.containsKey(key)){
         mymap.put(key,value);
      }else{
        //no existing key found
      }
于 2012-10-16T20:28:20.433 回答