2013-08-28 73 views
0

我在我的班級有兩個MultiValueMap
那些是MapAMapB。兩張地圖是平等的。我已經迭代使用MapA並在MapB中做了一些更改。但它影響着MapAMapA也在變化中。爲什麼會發生。修改一個MultiValueMap影響另一個

編輯

簡單代碼

MultiValueMap myMap = new MultiValueMap(); 
myMap.put("A", "1"); 
myMap.put("B", "2"); 

myMap.put("C", "3"); 

myMap.put("D", "4"); 

System.out.println("Mymap => "+myMap); 
MultiValueMap sec = myMap; 

if(myMap.containsKey("A")) 
{ 
    sec.getCollection("A").clear(); 
    sec.put("A", "11"); 


} 


System.out.println(myMap); // {D=[4], A=[11], B=[2], C=[3]} 
System.out.println(sec); // {D=[4], A=[11], B=[2], C=[3]} 
+0

向我們展示一些代碼。通常情況下,這不應該發生,但如果你犯了一個錯誤,它可能會發生。 –

+2

你有2000+的聲望。我希望你知道SO的工作原理。請顯示你的代碼。 –

+0

你可以發表一些代碼嗎?我認爲你在這兩張地圖中都使用了相同的對象引用。 – Ankit

回答

0

這 - 幾乎可以肯定 - 是因爲這兩個地圖包含到同一個對象的引用。修改對象時,它會在兩個地圖中自動更改。

+0

是的。它有相同的對象。但是,我如何克服它。 –

+0

@聲音:複製一份。 – NPE

+0

沒有得到 –

0

MultiValueMap sec = myMap;不作複製;它使得sec指代與myMap完全相同的MultiValueMap

+0

我該如何解決這個問題....我想通過迭代'mymap'來改變'sec'。這個怎麼做? –