定义一个ArrayList<ArrayList> all = new ArrayList<ArrayList>();
ArrayList<String> resultList1 = new ArrayList<String>();
all.add(resultList1);
resultList1.clear();
为什么这个时候all 也为空了?
ArrayList<String> resultList1 = new ArrayList<String>();
all.add(resultList1);
resultList1.clear();
为什么这个时候all 也为空了?
resultList1.clear(); 清空的是resultList1。我看成是all集合了。
System.out.println(all.size()); 输出为1,说明all没有被清空。只是把resultList1清空了。。至于 System.out.println(all.get(0).toString()); 输出为[] 可以理解为获取all集合的第一个arraylist元素,该元素集合中没有子元素,所以输出为[]。这是因为 ArrayList间接继承的类AbstractCollection 重写了toString()方法,如下:public String toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]"; StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
比如: ArrayList<String> resultList1 = new ArrayList<String>(){
@Override
public String toString() {
if(this.size()==0){
System.out.println("元素为空");
}
return super.toString();
}
};
要用clone,如果你的List<E>中的类型是基本类型的包装类直接用浅克隆,如果是其他引用类型的必须要用深克隆实现。
深克隆与浅克隆请看http://blog.csdn.net/lifetragedy/article/details/9751079
java实现shallow clone(浅克隆)与深克隆(deep clone)