2012-10-16 67 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 
     }