【发布时间】:2012-05-30 08:25:04
【问题描述】:
我有一个程序需要合并两个HashMap。哈希映射有一个String 的键和一个Integer 的值。合并的特殊条件是,如果键已经在字典中,Integer 需要添加到现有值中,而不是替换它。这是我到目前为止抛出NullPointerException的代码。
public void addDictionary(HashMap<String, Integer> incomingDictionary) {
for (String key : incomingDictionary.keySet()) {
if (totalDictionary.containsKey(key)) {
Integer newValue = incomingDictionary.get(key) + totalDictionary.get(key);
totalDictionary.put(key, newValue);
} else {
totalDictionary.put(key, incomingDictionary.get(key));
}
}
}
【问题讨论】:
-
NPE 在哪一行被抛出?
-
你初始化
totalDictionary字段了吗? -
totalDictionary 已声明但未在包装此函数的类的早期初始化为私有成员数据。 Eclipse 显示在 for 循环所在行抛出的异常。
-
这可能意味着
incomingDictionary为空或者incomingDictionary包含null作为键。 -
另外,您必须先初始化
totalDictionary,然后才能使用它...否则您将获得更多的 NPE。
标签: java android dictionary hashmap