Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新java映射条目_Java_Map_In Place - Fatal编程技术网

更新java映射条目

更新java映射条目,java,map,in-place,Java,Map,In Place,我面临着一个似乎没有明确解决办法的问题 我正在使用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;

我面临着一个似乎没有明确解决办法的问题

我正在使用
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;
        }
    }
}
private Map table=new HashMap();
公共无效更新(字符串键,int val){
if(!table.containsKey(key))返回;
入境;
for(条目:table.entrySet()){
if(entry.getKey().equals(key)){
entry.setValue(val);
打破
}
}
}
那么,有没有什么方法可以让我不必遍历整个
映射
就可以获得所需的
条目
对象呢?或者是否有某种方法可以就地更新条目的值?
Map
中的一些方法,比如
setValue(字符串键,int-val)

jrh的使用

table.put(key, val);
添加新的密钥/值对或覆盖现有密钥的值

从Javadocs:

V put(K键,V值):将指定值与此映射中的指定键相关联(可选操作)。如果映射以前包含键的映射,则旧值将替换为指定值。(称映射m包含密钥k的映射,当且仅当m.containsKey(k)返回true。)

你只需使用


如果键已存在于映射中,则返回上一个值。

如果键存在
表。put(key,val)
将覆盖该值,否则将创建一个新条目。呸!你完成了。:)


您可以使用key is
table.get(key)从映射中获取值关于它的内容

PS:its table.entrySet()。我在这里打错了。你可以删除第一个“如果”语句。如果键不存在,它仍然会导致整个映射的完整迭代。如果删除它,您仍然会遍历整个映射,如果没有密钥,则不会执行任何操作。现在,如果键存在,您可以遍历映射,发现它存在,然后再次遍历条目。作为参考,在Java 8中有一个putIfAbsent()方法,以防有人不想更新。
public Object put(Object key, Object value)