[英]HashMap behaving weird
import java.io.*;
import java.util.*;
class Solution {
public static void main (String[] args) {
HashMap<Integer, Integer> map = new HashMap<>();
long sq = 16;
int v = 8, u = 2;
int ans = 0;
map.put(u, map.getOrDefault(u, 0) + 1);
ans += map.getOrDefault(sq/v, 0);
System.out.println(ans);
}
}
答案显然应该是 1,但它输出的是 0。知道它为什么会这样吗? 或者我错过了什么?
sq/v
将long
除以int
,因此结果是long
,当传递给map.getOrDefault(sq/v,0)
时,它被装箱为Long
。 您的Map
没有Long
键,因此它返回默认值0
。
如果将sq
更改为int
, sq/v
的结果也将为int
,并且map.getOrDefault(sq/v,0)
将返回 1。
地图需要输入 java.lang.Integer 作为键
改成这样:
ans += map.getOrDefault(Integer.valueOf((int) (sq/v)), 0);
注意:原始数据类型int也可以使用。
这也将起作用:
ans += map.getOrDefault((int) (sq/v), 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.