Java 如何在2个哈希映射中初始化值
我在另一个hashmap中有一个hashmap,我试图访问该数据,但我得到了NullPointerException。我的代码是这样的:Java 如何在2个哈希映射中初始化值,java,Java,我在另一个hashmap中有一个hashmap,我试图访问该数据,但我得到了NullPointerException。我的代码是这样的: public class A { ConcurrentHashMap<String, List<String>> B; int data; public A() { B = new ConcurrentHashMap<String, List<String>>();
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);
如果有,我会得到一个空的异常!D.getindex.B.containskey。我猜是因为名单的缘故。如何修复此问题?在if中!D.getindex.B.Containsky,NPE是由D.getindex.B引起的,请检查D.getindex是否为空。问题可能在于它的D.getindex部分。如果索引不是D的正确键,那么它将返回null,然后您尝试使用null执行某些操作,这将抛出错误。请考虑尝试/ catch。< /p> < p>尝试此代码
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);
}
如果我检查它,我会在下一行得到一个NullPointerException,D.getindex.B.putkey,new ArrayList@user3666471在您执行检查“如果”!D.getindex.B.containskey{,您应该检查D是否包含像if!D.containsKeyindex{…}这样的索引。我建议将一些代码从B列表中的类Cputting对象中移出,并在类A中生成方法,这样您就不必一次又一次地重复该代码。