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

最近在学习集合学到Array和ArryList的区别时,发现:数组转换成List之后不能进行add和remove操作。

例:

public class Test {

    public static void main(String[] args) {
        String[]str={"111","222","333"};
        List strings=Arrays.asList(str);
        strings.add("444");

    }
}

会报以下错误:

数组转换成List之后不能进行add和remove操作的原因_第1张图片

查看   Arrays.asList(str);   的源码:

数组转换成List之后不能进行add和remove操作的原因_第2张图片

发现这里new了一个ArrayList的集合,但是这不是ArrayList类,这是Arrays里的一个静态的内部类。

此内部类并没有add和remove方法,所以如果此时调用add或者remove方法则会报错。

  那么,如果要进行add和remove操作应该怎么办呢?

使用如下语句:

ListnewStrings=new ArrayList(strings); 

将之前的对象放入一个新的ArrayList对象。

修改后:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {

    public static void main(String[] args) {
        String[]str={"111","222","333"};
        List strings=Arrays.asList(str);

        ListnewStrings=new ArrayList(strings);

        newStrings.add("444");

        for (String e:newStrings)
            System.out.println(e);


    }
}

 

输出:

数组转换成List之后不能进行add和remove操作的原因_第3张图片

你可能感兴趣的:(java)