如何复制一个对象(在这种情况下为数组列表),然后清除其中一个对象

时间:2019-08-05 10:14:08

标签: java arraylist

我有2个包含ArrayList的对象,我想执行以下步骤:

  1. 制作第一个对象的副本(因为其中包含一些有用的数据)
  2. 清除第二个对象中的ArrayList
  3. 从第一个对象的ArrayList向第二个对象的ArrayList添加1个元素

    obj1.arraylist.add("f");
    obj2=obj1;
    obj2.arrarylist.clear;
    obj2.arraylist.add(obj1.arraylist.get(0));
    

我收到此错误:

W/System.err: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

2 个答案:

答案 0 :(得分:0)

obj1中还有很多其他数据,因此构造函数不是一个选择。所以我使用了clone(),它可以工作。

OBJ obj1=new OBJ();
 obj1.arraylist.add("f");
 .
 .
//add some data to obj1 like 
OBJ obj2=new OBJ();
obj2=(OBJ)obj1.clone();
obj2.arrarylist=new Arraylist<OBJ>();
obj2.arraylist.add(obj1.arraylist.get(0));

我只是添加了一个克隆工具

  public class OBJ implements Cloneable{
 ...
 public Object clone()throws CloneNotSupportedException{
    return super.clone();
}}

答案 1 :(得分:-1)

如果只想“复制”阵列列表,则可以使用<errorDump> <context>MwSUdmn65MlwA81MDBVmg34ZjlXDReCYnIxjAwgZ15jHp8UXS0OQ2L/a8iph kR7moeATHKE7UkwbqeM1bluAAET0rr2AXwDdQdowNVgI5BYvwz7YBMUd5nsn AgldXNczMw/dSiFsj334+Bb/iOhXuaQo/S0FzyzqFPEqaBHVjPrJv70vdhTD dmHn7vKY/Zo2xZ/eyouLxobkFYdRw2zqX+HAkRpygUNPqHzvy0AJg6Kln8uv GhwphVedsu1buJc7gb2T+1HWqsCXB8jm9LI7GmDvA62sKmgmjxRDMl+UI6UE rn7gbhrc59oI4Wjem2aJK8ufTHuYM+xfXNFc5yY9CtoI4Wjem2aJzo+oIONC gYoZFhKeT1iysdoI4Wjem2aJ8B3Ju++KR9us+PNdpxdCk9oI4Wjem2aJL+bx eZCCp83ng4pRhi+GoQyXnF++cnIKHlx0bVlSX7X7AV8O24BoFwyXnF++cnIK rJUoxqtsZe6URWF1lQj7xgyXnF++cnIKkX2dNd0GKfLyeRPuEuaM1N6/6xVl 方法:

clone()

如果您还想“复制”对象的其余部分,我建议您覆盖Object的obj1.arraylist.add("f"); obj2.arraylist=obj1.arraylist.clone(); obj1.arraylist.clear(); 方法:

clone()

,然后使用该方法将类克隆到另一个对象中:

@Override
public SomeClass clone() {
    SomeClass someClass = new SomeClass();
    someClass.arraylist = this.arraylist.clone();
    someClass.someInt = this.someInt;
    ...
}

您必须执行此操作才能实际“复制”对象,因为使用SomeClass obj2 = obj1.clone(); 运算符只会复制引用。