定义一个ArrayList<ArrayList> all = new ArrayList<ArrayList>();
ArrayList<String> resultList1 = new ArrayList<String>();
all.add(resultList1);
resultList1.clear();
为什么这个时候all 也为空了?

解决方案 »

  1.   

    因为你看错了,all不为空。另外 ArrayList<ArrayList> 属于坯型,会有编译器警告。
      

  2.   

    我用System.out.println(all.get(0).toString());打印,出现[]是为什么?
      

  3.   

    我用System.out.println(all.get(0).toString());打印,出现[]是为什么? 
      

  4.   

    因为all 只是添加了对于resultList1集合的一个引用,  真实的集合清空了,你在引用这个集合肯定就没有了。。
      

  5.   

    那需要删除resultList1,同时还要all里存在,应该怎么解决?
      

  6.   

    不好意思,,我看错了:
    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(", ");
    }
        }
      

  7.   

    size是1,但是不光是toString,你用循环里面的元素也出不来啊
      

  8.   

    应该是引用的问题,因为在resultList1.clear()之前打印就有,之后打印就没有
      

  9.   

    那是因为arrayList1里面为空,你要是加个值或者干脆new它的时候重写toString 
      

  10.   

    arrayList1不为空,就是传进去的是引用,对象没了就都没了,
      

  11.   

    什么意思呢??   不能这么理解啊,传进去的arrayList1 这个引用不为空,只不过它里面没有元素罢了。。
    比如: ArrayList<String> resultList1 = new ArrayList<String>(){
    @Override
    public String toString() {
    if(this.size()==0){
    System.out.println("元素为空");
    }
    return super.toString();
    }
    };
      

  12.   

    那需要删除resultList1,同时还要all里存在,应该怎么解决?
    要用clone,如果你的List<E>中的类型是基本类型的包装类直接用浅克隆,如果是其他引用类型的必须要用深克隆实现。
    深克隆与浅克隆请看http://blog.csdn.net/lifetragedy/article/details/9751079
    java实现shallow clone(浅克隆)与深克隆(deep clone)
      

  13.   

    all.get(0)取到的是resultList1,resultList1元素已清空