Java 如何在2个哈希映射中初始化值

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

我在另一个hashmap中有一个hashmap,我试图访问该数据,但我得到了NullPointerException。我的代码是这样的:

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中生成方法,这样您就不必一次又一次地重复该代码。