2016-09-09 24 views
1

用下面的代碼後,我失去我的Map對象從List取出後,但我想保持它在Map保持對象的地圖從列表中刪除它

ArrayList<object> myList= new ArrayList<>(); 
Map<String, ArrayList<object>> map = new HashMap<String, ArrayList<object>>(); 

myList.add(object); 
map.put(key1,myList); 
map.get(key1); // return [object] 
myList.remove(get(index)); 
map.get(key1); // return [] 

回答

0

。所以單個列表中的變化也會反映在地圖列表的變化中。

因此,您必須在將其添加到地圖之前創建列表的副本。

或者其他解決方案是,您可以在列表添加到地圖後克隆地圖。

0

你有在您的列表副本上執行刪除操作:

List<object> myList2 = new ArrayList<>(myList); 
myList2.remove(get(index)); 
0

您似乎將對象從列表發送到地圖,即通過引用發送。您可能想嘗試創建一個具有相同值的新對象並將其發送給地圖,而不是使用相同的對象引用。這可能是你的問題。

0
ArrayList<object> myList = new ArrayList<>(); 
Map<String, ArrayList<object>> map = new HashMap<String, ArrayList<object>>(); 

myList.add(object); 
map.put(key1, new ArrayList<>(myList)); 
map.get(key1); 
myList.remove(get(index)); 
map.get(key1); 

閱讀當您添加列表,然後將列表中的地圖和個人名單都具有相同的內存地址這個話題可能是有用的Is Java 「pass-by-reference」 or 「pass-by-value」?

0

這意味着你想要完成的是讓對象沒有對象離開列表。

只需使用

ArrayList.get(indexOfObjectToGet); 

//not 
ArrayList.remove(indexOfObjectToGet);