数组转换成List之后不能进行add和remove操作原因

tech2023-05-21  101

最近在学习集合学到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); } }

完美解决!!!!!!

最新回复(0)