Arrays.asList注意点

百般思念 提交于 2020-02-04 16:13:45

在进行数组转List的时候,经常会用到Arrays.asList();如果不注意的话,这个方法可能就会踩坑。

问题复现:

public static void arrays2List(Integer[] numbers){
        List<Integer> integers = Arrays.asList(numbers);
        integers.add(1);
    }

执行时会出现下面的问题:

在对Arrays.asList转换后的list进行操作的时候,只可以进行如下的操作。因为这里返回的list并不是java.util.ArrayList,而是Arrays中的静态内部类,java.util.Arrays$ArrayList。

可以操作的方法中没有.add方法,所以会出现错误。

解决:

1 类型强转:转换成java.util.ArrayList来解决

List<Integer> integers = new ArrayList<>(Arrays.asList(numbers));

2 使用 Collections.addAll来解决(推荐使用)

public static void arrays2List(Integer[] numbers){
        List<Integer> objects = new ArrayList<>();
        Collections.addAll(objects,numbers);
    }

总结:

如果数组转list后还需要对list进行操作的话,一定要慎重使用Arrays.asList。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!