2011-12-09 72 views
-1

我有一個Places的列表。每個Place都有一個鏈接到它的其他Place's的ArrayList。ArrayList中的每個元素都是最後一個元素?

當創建一個Place時,它存儲一個ArrayList places。此ArrayList是像這樣產生......

public ArrayList<Place> getPlaces(){ 
` for(Place p : link.getPlaces()){ 
     places.add(new Place("Value1","Value2"); 
    } 
    return places; 
} 

然而,在places價值似乎永遠是創建的最後一個元素。我檢查了place的構造函數,並且正在創建的位置不同,但是我在ArrayList中接收的值不是。爲什麼會發生這種情況?

如果它可以幫助我打電話從另一個類,這與像這樣打印的地方驗證碼...

ArrayList<Place> places = p.getPlaces(); //Where p is a place. 
for(Place p : places){ 
    System.out.println(p.toString()); 
} 
+3

請顯示一個簡短但完整的程序來演示問題。例如,在你的第一個代碼片段中,「places」聲明在哪裏? –

+3

此代碼不能編譯。另外,每次調用getPlaces()時都不會創建新的'ArrayList'。請張貼實際證明問題的代碼。 –

+3

發表[SSCCE](http://sscce.org/) – nebula

回答

0

在第一種方法中,所有的地方對象將看起來是一樣的,甚至認爲他們是不同的對象。

0

我能夠自己解決這個問題。原來我是軟拷貝自定義對象的一部分,而複製其餘的部分導致我相信ArrayList被覆蓋。

相關問題