获取哈希图

时间:2019-02-17 14:40:25

标签: java hashmap

获取哈希图问题。

我尝试将hashmap移到if (BookValues.containsKey(ID))之外,而我总是会得到:

  

java空指针异常

这是代码: (让我们假设这已被声明。我将Integer,Class用于我的哈希图)

    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();

每当我在contains密钥内对其进行编码时,它都可以工作,但是当我在其外部进行操作时,它会出错。我当时想将其移到.containsKey之外,因为它会使我的代码更长,并且我试图保存spa有人可以向我解释吗?

1 个答案:

答案 0 :(得分:1)

代码

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)

请考虑遵循java code conventions