在进行数组转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。
来源:CSDN
作者:每年进步一点点
链接:https://blog.csdn.net/qq_38008721/article/details/104169806