HashMap正确遍历方式,千万不要再forforfor啦!!!
for (int i = 0; i < map.size(); i++) {
if (map.get(i)/n>=0.01) {
num++;
}
}
上述代码报空指针异常。为什么?
循环变量 i
取值的范围是从0到 map.size()
,但是这里的 map.size()
指的是 HashMap
中键值对的数量,而不是 HashMap
中键的集合的大小。
因此,使用 map.get(i)
来访问 HashMap
中的元素是错误的,应该改为使用 map.values()
方法来访问 HashMap
中的所有值。所以应该使用如下代码
for (int value : map.values()) {
if ((double) value / n >= 0.01) {
num++;
}
}
这样可以避免空指针异常。