Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 如何使用map函数get_Java_Map - Fatal编程技术网

Java 如何使用map函数get

Java 如何使用map函数get,java,map,Java,Map,我有一个字符串到整数的映射。我想检查映射是否有某个字符串,如果有,修改映射到的整数值 Map <String, Integer> m= new SortedMap <String,Integer>(); Map <String, Integer> m2 = new SortedMap<StringInteger>(); //do some stuff Iterator <String,Integer> i = m2.iterator(

我有一个字符串到整数的映射。我想检查映射是否有某个字符串,如果有,修改映射到的整数值

Map <String, Integer> m= new SortedMap <String,Integer>();
Map <String, Integer> m2 = new SortedMap<StringInteger>();
//do some stuff
Iterator <String,Integer>  i = m2.iterator();
//add some values into the first map first map

    while (i.hasNext()){
       String temp =  i.next();
      int found = m.get(temp);
     if ( found != null) {//this is giving me a syntax error , something about how ints 
                                                               can't be null , do I just compare it to zero

    //process value that temp maps to 
       averages.put(temp, val); //
    }
Map m=new SortedMap();
Map m2=新分拣的地图();
//做点什么
迭代器i=m2.Iterator();
//将一些值添加到第一个贴图第一个贴图中
while(i.hasNext()){
字符串temp=i.next();
int found=m.get(温度);
如果(found!=null){//这给了我一个语法错误,关于ints
不能为空,我只是将它与零比较吗
//temp映射到的进程值
平均值。put(温度、val)//
}
}


另外,当我在第二个循环中输入该键时,它是否会删除第一个键,并输入另一个具有新进程值的键。

您需要将
int
更改为
Integer

Integer found = m.get(temp);
“int”是原语,不能与null进行比较


地图键是唯一的,因此如果您将同一个键放置两次,它将被替换

看起来您正在尝试的操作可以用putAll完成

Map<String, Integer> both = ...
both.putAll(m1);
both.putAll(m2);
Map两者=。。。
都是。putAll(m1);
两者。普塔尔(m2);

这将包含m2中的所有值以及m1中的所有值。

类似于通过引用添加到可变自定义类:

Map<String, MyValue> myMap = new HashMap<String, MyValue>();
(...)
MyValue value = myMap.get(temp);
value.inc();

(...)

public class MyValue {
    private int value;
    public int get() {
        return value;
    }
    public void set(int newValue) {
        this.value = newValue;
    }
    public void inc() {
        value++;
    }
}
没有MyValue包装器:

for(String key : m.keySet()) {
    Integer value = m.get(key);
    m.put(key, value + 1);
}

参见

也尝试使用map.containsKey(keyValue);不需要额外的循环。如果我使用map.contains,我是否还需要使用get来获取值?太好了,这正是我需要的答案。如果我想遍历贴图并增加所有的值。我必须做find=m.get(temp),m.put(temp,++find);或者,当您循环遍历整个映射并更新每个入口时,是否有更有效的方法?也许可以添加一些关于自动(取消)装箱的内容?整数是不可变的,因此您确实需要用您提到的增加值替换映射中的值。您可以通过使用自定义类作为映射值来解决这个问题,该映射值以int为字段。一旦你有了对你的值的引用,你就可以增加字段值,而不需要再把它放在地图上。这不是原始问题的一部分。现在我想循环遍历整个贴图并增加每个值。有没有一种方法可以让我依次获得每个值谢谢,这正是我所需要的。为什么我在java地图库页面上找不到
for(String key : m.keySet()) {
    Integer value = m.get(key);
    m.put(key, value + 1);
}