Java 类中所有成员共享的私有ArrayList

Java 类中所有成员共享的私有ArrayList,java,class,arraylist,private,Java,Class,Arraylist,Private,当我使用setAssetWight方法设置存储在ArrayList中的对象的值时,对象的每个实例都将其ArrayList中的值更改为使用setAssetWight设置的值 private List<Asset> assetList = new ArrayList<Asset>(); private int fitness; public Portfolio(){ } public void setAssetWeight(int i, int weight){

当我使用setAssetWight方法设置存储在ArrayList中的对象的值时,对象的每个实例都将其ArrayList中的值更改为使用setAssetWight设置的值

private List<Asset> assetList = new ArrayList<Asset>();
private int fitness;

public Portfolio(){    
}

public void setAssetWeight(int i, int weight){
    this.assetList.get(i).setWeight(weight);
}
当我打印pf2中包含的资产权重时,它将显示第一个资产的权重为10,而不是默认的0

为什么当我使用另一个对象调用该方法时,该对象的一个实例的ArrayList中的值会发生更改?ArrayList声明为private,这是否意味着它只能由它所属的对象修改

Portfolio1 pf1 = new Portfolio1();
Portfolio1 pf2 = new Portfolio1();

pf1.add(0, assetList.get(0));
pf1.add(1, assetList.get(1));
pf1.add(2, assetList.get(2));

pf1.setAssetWeight(0, 10);

System.out.println(pf2.toString());
这是我用来测试的代码部分,在本例中,print语句将打印出AssetList中的第一个资产的权重为10,即使我只为pf1而不是pf2设置了权重

public void add(Asset asset){
    this.assetList.add(asset);
}

这是用于将资产添加到列表中的代码。

无法复制。毫无疑问,在这两个实例中,您都在将相同的资产实例添加到列表中。

您的问题是什么?这只是一堆语句。编辑后包含我的问题,很抱歉发布您的完整代码,包括打印语句请同时发布创建并向这些列表添加元素的代码。我猜您在两个列表中使用相同的
Asset
元素。即使列表不同,如果两个列表中都包含相同的元素,更改将反映在所有事件中。使用的资产列表包含不同的资产,但对于每个投资组合,资产都是相同的,唯一的区别应该是每个资产的权重,当我更改一个投资组合的资产权重时,每个投资组合中资产变化的权重
public void add(Asset asset){
    this.assetList.add(asset);
}