集合中关于addAll的一些问题

集合a,b, a.addAll(b),a中添加的是b中元素的地址还是具体的元素,我理解是存的地址,那为什么修改a或b中的元素,不会影响另一个

ArrayList<Object> array=new ArrayList<Object>();
    String[] ss={"a","b","c"};
    array.add(ss);
    ArrayList<Object> array2=new ArrayList<Object>();
    array2.addAll(array);
    ((String[])array2.get(0))[0]="d";
    Assert.assertEquals(((String[])array2.get(0))[0],((String[])array.get(0))[0]);//sucess


    ArrayList<Object> array=new ArrayList<Object>();
    array.add("ss");
    ArrayList<Object> array2=new ArrayList<Object>();
    array2.addAll(array);
    array2.set(0, "sd");
    Assert.assertEquals(array2.get(0),array.get(0));//failed

数组转换成集合,为什么集合元素的改变会影响数组

首先集合是一个泛概念,你用的是那种集合?ArrayList?HashSet?
我可以确定的时修改a或b中的元素会影响另一个

贴出你的代码

看你添加的是什么类型,如果是值类型,不影响,如果是引用类型,影响

建议去看一下该方法的源码!我已不记得了,但是对于这个方法,我的理解是遍历b集合,复制b集合中的每个元素,并添加到a集合中去!所以存的并不是b集合的索引~