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);
}