[英]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.