我在代码中使用Hashmap来保存一些数据。我正在使用以下代码
HashMap<Integer,ArrayList<Friends>> friendsHashMap = new HashMap<Integer, ArrayList<Friends>>();
...
...
ArrayList<Friends> friendsArrayList = new ArrayList<Friends>();
JSONArray jsonArray = (JSONArray) response.get("friends");
for (int i=0; i<jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Friend friend = new Friend(jsonObject);
friendsArrayList.add(friend);
}
friendsHashMap.put(id,friendsArrayList); //Adding data to hash map
Log.d("friendsHashMap",friendsHashMap.toString());
Log.d("friendsArrayList ",friendsArrayList.size()+""); //Till this line previously loaded data remain normal
friendsLocationMapFragment.drawMap(friendsArrayList); //Once this line is executed the previously added data in the hashmap value changes to empty array.
我做错了什么?
答案 0 :(得分:0)
可能是drawMap(friendsArrayList)
;将数据放入friendsHashMap的方法与您在此行friendsHashMap.put(id,friendsArrayList); //Adding data to hash map
如果key相同,那么HashMap将覆盖以前的新值。
如果你确定键值在hashmap中是唯一的那么有一种可能性,在drawMap(friendsArrayList)中你可能正在清除friendsArrayList或删除元素或者将新的空列表分配给friendsArrayList,因为你将list的相同引用传递给drawMap