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

时间:2014-11-16 05:34:11

标签: java

我在另一个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>而猜测它。我该如何解决这个问题?

3 个答案:

答案 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);
}