定义一个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 也为空了?
解决方案 »
- Spring mvc 如何遍历传递到jsp的map
- jdk 7 IllegalArgumentException: Comparison method violates its general contract
- jframe 设置图片背景问题
- 请问JAVA是解释执行的吗?所谓解释执行是什么?JSP的解释执行和JAVA一样的道理吗?什么是运行期?
- Java发送HTTP请求和提取数据的Java代码:
- 比较经典:怎么解析HTML文件?请高手赐教!!万分感谢!
- list对象集合如何转换成json格式(除了迭代之后拼成json格式)
- some questions(continue)
- java,swing的问题
- 用java怎样操作数据库?
- 撒分!在智能手机或移动设备上实现系列功能技术以及时间问题(功能:扫描条形码、在本地储存数据、在有信号或与电脑连接时连接某网站上传数据,判断是否上传成功)
- 所谓空间复杂度和时间复杂度
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)