更新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)