请考虑以下代码:
Map<Integer, Material> TestMap= new HashMap<Integer, Material>();
if (TestMap.get(index)!= null) {
index++;
}
如果TestMap.get(index)
为null
会怎样?有人说它会退出代码,有人说它会抛出ArrayIndexOutOfBoundsException
。
答案 0 :(得分:3)
您的代码不会抛出ArrayIndexOutOfBoundsException
,因为它是HashMap
。根据{{1}}的{{1}}方法的文档:
public V get(对象键)
返回指定键映射到的值,如果此映射不包含键的映射,则返回null。
因此,如果get()
不包含HashMap
的值,if将返回null,那里没有问题。
修改
如果您的HashMap
是ìndex
,并且您添加了10个元素,并且您在 HashMap
上调用了List
,则那么你会得到get(25)
。
总结
List
这段代码不会抛出任何异常(除非TestMap为null)。如果给定键没有值,ArrayIndexOutOfBoundsException
将返回null,并且由于您执行了空检查,因此当地图中的键不存在时,不会输入if。