问题描述
- 集合中关于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中的元素会影响另一个
贴出你的代码
解决方案四:
List集合以及add() 与addAll()的区别
解决方案五:
看你添加的是什么类型,如果是值类型,不影响,如果是引用类型,影响
解决方案六:
建议去看一下该方法的源码!我已不记得了,但是对于这个方法,我的理解是遍历b集合,复制b集合中的每个元素,并添加到a集合中去!所以存的并不是b集合的索引~
时间: 2024-10-25 19:18:16