Arrays.asList三坑,数组/集合转换,remove/add异常,修改影响原数组
一、Arrays.asList说明
Arrays作为java.util下的工具类,提供了很多好用的方法,主要是针对数据和集合进行处理。今天主要针对Arrays.asList函数进行分析说明。Arrays.asList见名知意来说,就是把各项数据转换成集合,入参是不定长参数,返回值是对应的List的泛型,这里的List需要额外注意。
二、Arrays.asList不能直接转化基本数据数组/集合为对应大小的集合
直接使用基础数据数组的时候,会直接将该数组作为一个集合元素,且size为1
Arrays.asList(new int[]{1, 2, 3});
输出size为1
不过这个问题不大,一般我们会生成变量名,如果直接使用IDEA提供的快捷变量名生成,也可以看到泛型为List<int[]>。 快捷键:Alt+Enter(部分情况可能会提示Collections.singletonList),而不是生成变量名。而且也不仅针对基本数据类型,包含基础数据集合,String集合等是相同的结果,都会直接作为一个元素。不过包装类集合不在此列,可以使用IDEA帮助查看。
三、使用Arrays.asList生成的对象不能进行add和remove操作
这个原因也很简单,返回list并未提供add和remove操作。源码中可以看到返回的ArrayList,需要注意这里的ArrayList是Arrays类的静态类,不是我们常使用的那个。而这个类是直接继承AbstractList,而这个类的实现就是直接抛出异常
四、使用Arrays.asList生成的集合,当修改数据时,会影响原数组或集合
这个不注意可能会导致异常的bug,建议使用ArrayList进行包装转换
- 点赞
- 收藏
- 关注作者
评论(0)