最近在学习集合学到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);
}
}
完美解决!!!!!!