我在使用 TreeMap 时遇到了问题。
Map<Integer, Integer> a = new TreeMap<Integer, Integer>();
a.put(5,1);
a.put(3,2);
a.put(4,3);
int target = 7;
System.out.println(target - a.get(5)); //line 6
for(Map.Entry b : a.entrySet()){
System.out.println(target - b.getValue()); //line 8
}
上面的代码给了我一个编译错误。但是,当我将第 8 行更改为:
Map<Integer, Integer> a = new TreeMap<Integer, Integer>();
a.put(5,1);
a.put(3,2);
a.put(4,3);
int target = 7;
System.out.println(target - a.get(5)); //line 6
for(Map.Entry b : a.entrySet()){
System.out.println(target - (int) b.getValue()); //line 8
}
然后就可以了。谁能给我一些想法,为什么我不需要在第 6 行进行任何更改但需要在第 8 行将 Integer 转换为 int?
最佳答案
您忽略了 for
语句中的“原始类型”警告。应该是:
for(Map.Entry<Integer,Integer> b : a.entrySet()) {
...
原始类型会导致 getValue()
返回 Object
。如果你提供了类型参数,那么编译器就知道它会返回 Integer
,这会被自动拆箱。
关于java - 为什么需要从 Integer 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35595997/