将List <type>复制到另一个实例变量</type>

时间:2012-08-10 02:51:52

标签: java

我正在传递回调方法(列表a),我想知道如何复制该值。

List<addresses> mInstanceList;
public void setMyList(List<Address> addresses)
{
  mInstanceList = addresses;     // is this going to work?
}

3 个答案:

答案 0 :(得分:4)

你是说新副本吗?如果是这样,您可以执行mInstanceList=new Arraylist(addresses);

之类的操作

答案 1 :(得分:1)

您正在复制对地址指向 mInstanceList 的列表的引用。如果其他人更改了该列表的元素,它将反映在 mInstanceList 中。 如果您不想这样,您可以创建一个新列表(可能是一个ArrayList)并以相同的顺序复制地址列表的内容。

mInstanceList = new ArrayList<Address>();
for (Address a: addresses) {
    mInstanceList.add(a);
}

答案 2 :(得分:0)

1。如果要复制列表并将其分配给具有自己副本的列表引用变量,请使用Copy Constructor

<强>例如

ArrayList<Address> list1 = new ArrayList<Address>();

ArrayList<Address> list2 = new ArrayList<Address>(list2);

对list1引用的ArrayList对象所做的更改不会反映到list2引用的ArrayList对象中,因为它们都指向堆上的2个不同的ArrayList对象。

2。如果您只想指向堆上同一对象的List Reference Variable,请执行此操作。

ArrayList<Address> list1 = new ArrayList<Address>();

ArrayList<Address> list2 = list1 ;

由于现在引用list1和list2都指向堆上的同一个ArrayList对象,因此一个更改将反映在另一个上。