ArrayList中的每个元素都添加了最后一个元素?

时间:2011-12-09 15:38:35

标签: java

我有Places的列表。每个Place都有一个与其链接的其他Place's的ArrayList。

创建Place时,它会存储places的ArrayList。这个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());
}

2 个答案:

答案 0 :(得分:0)

在第一种方法中,即使它们是不同的对象,所有Place对象看起来都是一样的。

答案 1 :(得分:0)

我自己能解决这个问题。事实证明,我正在软复制我的自定义对象的一部分,而硬复制其余部分导致我相信ArrayList被覆盖。