76

我面临一个似乎没有直接解决方案的问题。

我正在使用java.util.Map,并且我想更新键值对中的值。

现在,我正在这样做:

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?或者有什么方法可以更新条目的值吗?有什么方法MapsetValue(String key, int val)

jrh

4

3 回答 3

162

采用

table.put(key, val);

添加新的键/值对或覆盖现有键的值。

来自 Javadocs:

V put(K key, V value):将指定值与此map中的指定键关联起来(可选操作)。如果映射先前包含键的映射,则旧值将替换为指定值。(当且仅当 m.containsKey(k) 返回 true 时,映射 m 被称为包含键 k 的映射。)

于 2009-06-30T07:05:23.167 回答
13

如果存在键table.put(key, val)只会覆盖值,否则它将创建一个新条目。噗!你就完成了。:)

您可以使用键从地图中获取值就是table.get(key);这样

于 2009-06-30T07:13:23.417 回答
6

您只需使用该方法

public Object put(Object key, Object value)

如果键已经存在于 Map 中,则返回之前的值。

于 2009-06-30T07:10:50.317 回答