最近在学习集合学到Array和ArryList的区别时,发现:数组转换成List之后不能进行add和remove操作。
例:
public class Test { public static void main(String[] args) { String[]str={"aa","bb","cc"}; List<String> list=Arrays.asList(str); strings.add("dd"); } }会报以下错误:
查看 Arrays.asList(str); 的源码:
发现这里new了一个ArrayList的集合,但是这不是ArrayList类,这是Arrays里的一个静态的内部类。
此内部类并没有add和remove方法,所以如果此时调用add或者remove方法则会报错。
那么,如果要进行add和remove操作应该怎么办呢?
使用如下语句:
ListnewStrings=new ArrayList(list);
将之前的对象放入一个新的ArrayList对象。
修改后:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { String[]str={"aa","bb","cc"}; List<String> list=Arrays.asList(str); List<String>newStrings=new ArrayList<String>(list); newStrings.add("dd"); for (String e:newStrings) System.out.println(e); } }完美解决!!!!!!