我有2个包含ArrayList的对象,我想执行以下步骤:
从第一个对象的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
答案 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();
运算符只会复制引用。