2009-06-30 106 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);这就是它