Java 获取哈希映射
获取哈希映射是一个问题 我尝试在Java 获取哈希映射,java,hashmap,Java,Hashmap,获取哈希映射是一个问题 我尝试在if(BookValues.containsKey(ID))之外获取hashmap,我总是会得到: java空指针异常 代码如下: (假设已经声明了,我在hashmap中使用了Integer,Class) 每当我在contains键内编写代码时,它都会工作,但当我在contains键外编写代码时,它就会出错。我想把它放在.containsKey之外,因为这样会使我的代码更长,我想保存SPA,有人能给我解释一下吗 代码 int targetID = BookValu
if(BookValues.containsKey(ID))
之外获取hashmap
,我总是会得到:
java空指针异常
代码如下:
(假设已经声明了,我在hashmap中使用了Integer,Class)
每当我在contains键内编写代码时,它都会工作,但当我在contains键外编写代码时,它就会出错。我想把它放在.containsKey
之外,因为这样会使我的代码更长,我想保存SPA,有人能给我解释一下吗 代码
int targetID = BookValues.get(ID).BookID.intValue();
String targetTitle = BookValues.get(ID).Title.toString();
String targetAuthor= BookValues.get(ID).Author.toString();
int targetCopies=BookValues.get(ID).Copies.intValue();
有很多地方可以抛出异常
BookValues.get(ID)
将为您提供对象(如果该对象存在)或null(如果不存在)。为避免可能出现的NullPointerException
这一行应该被分解。以下假设地图的值是BookValue
对象
BookValue value = BookValues.get(ID);
if (value != null) {
int targetId = value.BookID.intValue();
String targetTitle = value.Title.toString();
String targetAuthor = value.Author.toString();
int copies = value.Copies.intValue();
// rest of code here
} else {
// TODO do something if there's no value in the map for the specified key
}
请注意,通过这种方式,您还可以避免重复上的.get(ID)
还可以考虑遵循键不存在时,HashMap
将返回null。当调用BookValues.get(ID).Title.intValue()
并且ID
不是映射中的现有键时,您希望它执行什么操作?出现了什么错误?请添加错误的堆栈跟踪。在执行进一步操作之前,为什么不在从hashmap获取密钥后应用null检查。同意“dazito”、“ernest_k”和“kamlesh pandey”。此外,空引用检查也是良好编程实践的一部分。
BookValue value = BookValues.get(ID);
if (value != null) {
int targetId = value.BookID.intValue();
String targetTitle = value.Title.toString();
String targetAuthor = value.Author.toString();
int copies = value.Copies.intValue();
// rest of code here
} else {
// TODO do something if there's no value in the map for the specified key
}