执行期间Hashmap值会发生变化

时间:2014-04-29 20:31:54

标签: java android hashmap

我在代码中使用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.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

可能是drawMap(friendsArrayList);将数据放入friendsHashMap的方法与您在此行friendsHashMap.put(id,friendsArrayList); //Adding data to hash map

之前放置数据的ID相同

如果key相同,那么HashMap将覆盖以前的新值。

如果你确定键值在hashmap中是唯一的那么有一种可能性,在drawMap(friendsArrayList)中你可能正在清除friendsArrayList或删除元素或者将新的空列表分配给friendsArrayList,因为你将list的相同引用传递给drawMap