簡體   English   中英

Android Hashmap返回null

[英]Android Hashmap returning null

我有一個可擴展的列表視圖,其中數據存儲在

HashMap<Integer, List<MyChildObject>>

並在擴展時崩潰, List.size()是在adapter.getChildrenCount()中說List.size()空指針,其簡單之處是:

public int getChildrenCount(int groupPosition) {
    return mMap.get(groupPosition).size();
}

現在,我在運行的調試器中放置了一個斷點,發現我的mMap很好,我正在測試一個元素,其中該元素的列表包含一個子對象。 我可以在調試器中看到該元素實際上是一個大小為1的列表。

但是測試List<MyChildObject> list = mMap.get(0); 即使在調試器中可以看到mMap包含該元素( <Integer.valueOf(0), non null list of objects><Integer.valueOf(0), non null list of objects>它也會返回null。

使用4個hashmap元素進行測試時,甚至更奇怪的是:

<0, list>
<1, list>
<2, list>
<3, list>

它工作正常,我可以通過調用mMap.get(n)訪問非null列表...

我在這里用整數鍵不能正確使用HashMap嗎? 為什么我無法檢索任何元素?

奇數非常好,它正在檢查Integer對象,正確地將-128到127之間的值裝箱和拆箱,因為通常會保存這些值。 但是,鑒於整數的鍵值確實會檢查基礎值而不是內存位置,因此兩者之間的相等應該相同。

為什么要使用哈希圖? 我的意思是這種形式不是針對ArrayList<ArrayList<MyChildObject> >嗎? 並且以防萬一,您應該將count函數切換為具有null檢查。

public int getChildrenCount(int groupPosition) {
    List<MyChildObject> list = mMap.get(groupPosition);
    if (list == null) return 0;
    return list.size();
}

因為如果允許零尺寸的對象,則賠率很高,因此使用null也是一樣。

暫無
暫無

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

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