2009-06-30 244 views
62

我面臨的問題似乎沒有直截了當的解決方案。更新java映射條目

我正在使用java.util.Map,我想更新鍵值對中的值。

現在,我正在做這個LIK:

private Map<String,int> table = new HashMap<String,int>(); 
public void update(String key, int val) { 
    if(!table.containsKey(key)) return; 
    Entry<String,int> entry; 
    for(entry : table.entrySet()) { 
     if(entry.getKey().equals(key)) { 
      entry.setValue(val); 
      break; 
     } 
    } 
} 

那麼,有沒有方法讓我可以得到所需要的Entry對象,而不必通過整個Map迭代?或者有什麼方法可以更新條目的值? Map中的一些方法,如setValue(String key, int val)

JRH

+0

PS:其table.entrySet()。我在這裏輸入了錯誤信息。 – jrharshath 2009-06-30 07:11:21

+0

您可以刪除第一個「if」語句。如果密鑰不存在,它仍會導致完整的迭代。如果你刪除它,你仍然會遍歷整個地圖,並且如果密鑰不存在則不執行任何操作。現在,如果鍵存在,則遍歷地圖,發現它存在,然後再次遍歷條目。 – 2015-07-23 23:48:04

回答

136

出了什麼問題只是

table.put(key, val); 

5

你只需要使用method

public Object put(Object key, Object value) 

如果鍵已經存在於地圖,然後返回一個值。

11

如果密鑰存在table.put(key, val)將只覆蓋該值,否則它會創建一個新條目。噗!你就完成了。 :)

您可以通過使用密鑰從地圖中獲得的價值是table.get(key);這就是它