簡體   English   中英

如何在2個哈希圖中初始化值

[英]How to initialize value within 2 hashmaps

我在另一個哈希圖中包含一個哈希圖,並且試圖訪問該數據,但是卻遇到了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> 我該如何解決?

if(!D.get(index).B.contains(key)) ,NPE由D.get(index).B引起,檢查D.get(index)是否為null。

問題可能出在它的D.get(index)部分。 如果index不是D的適當鍵,則它將返回null,然后您嘗試使用null進行操作,這將引發錯誤。 考慮嘗試/捕獲。

試試這個代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM