我在另一个hashmap中有一个hashmap,我试图访问该数据,但我得到的是NUllPointerExceptions。我的代码是这样的:
public class A {
ConcurrentHashMap<String, List<String>> B;
int data;
public A() {
B = new ConcurrentHashMap<String, List<String>>();
data = 0;
}
}
public class C {
ConcurrentHashMap<String, A> D;
....
D = new ConcurrentHashMap<String, A>();
....
D.put(someKey, new A());
....
if(!D.get(index).B.contains(key)) {
D.get(index).B.put(key, new ArrayList<String>());
}
D.get(index).B.get(key).add(value);
我在if(!D.get(index).B.contains(key))
行上遇到NullException。我因为List<String>
而猜测它。我该如何解决这个问题?
答案 0 :(得分:0)
在if(!D.get(index).B.contains(key))
中,NPE由D.get(index).B
引起,检查D.get(index)
是否为空。
答案 1 :(得分:0)
问题可能在于它的D.get(索引)部分。如果index不是D的正确键,那么它将返回null,然后你尝试使用null执行某些操作,这会抛出错误。请考虑使用try / catch。
答案 2 :(得分:0)
试试此代码
D = new ConcurrentHashMap<String, A>();
D.put(someKey, new A());
A aObj = D.get(index);
if (aObj != null) {
if (!aObj.B.contains(key)) {
aObj.B.put(key, new ArrayList<String>());
}
aObj.B.get(key).add(value);
}