我在Java中有2个ArrayLists:

mProductList = new ArrayList<ProductSample>();
mProductList2 = new ArrayList<ProductSample>();

mProductList = productSampleList;

mProductList2 = productSampleList;

mProductList2 .remove(3);

productSampleList的大小为5。
为什么在执行此段代码之后。 mProductList的大小为4?

我们有什么办法可以避免这种情况?我希望mProductList的大小与productSampleList相同,为5。
谢谢!

最佳答案

尝试这个:

mProductList2 = new ArrayList<ProductSample>(productSampleList);

目前,productSampleListmProductListmProductList2都指向同一对象,因此对一个对象的更改将反射(reflect)在另一个对象上。我的解决方案是简单地创建可以独立于原始列表进行修改的列表副本,但请记住:productSampleListmProductList仍指向同一对象。

09-25 20:19