在我们接触了数组之后,就可以把它转换成别的类型。具体的转换方法上想必大家都会,但是有些人在使用时出现了错误,可见这个问题还是迫切需要大家了解和解决的。本篇以Arrays.asList的转换方法为例,探究转换过程中的一些注意事项,以及处理问题点的解决办法。
1.数组转List
String[] str = new String[]{"AA", "BB", "CC"};
List list = Arrays.asList(str);2.使用注意
(1)转换的数组不能是基本类型
首先,它转换的数组不能是基本类型,也就是如果要转基本类型,至少也要用包装类。
如下的结果是有问题的,会数组下标越界,因为实际上这个List只有一个元素,并且这个元素是整个数组对象a,并没有进行转换:
int[] a = {1, 2, 3};
List list = Arrays.asList(a);
System.out.println(list.get(1));(2)不能使用集合的操作方法
像add、remove、clear都是不能使用的,会抛出UnsupportedOperationException异常,因为Arrays.asList() 方法返回的并不是 java.util.ArrayList,而是 java.util.Arrays的一个内部类,这个内部类没有重写集合的这些方法。
但是set还是能用的,可以重写修改单个元素的值。
我们可以在Arrays中查看源码,只重写了get、set、indexOf、contains、forEach、replaceAll和sort方法。
3.问题解决
通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList。
private void testArrayCastToListRight() {
String[] strArray = new String[2];
ArrayList list = new ArrayList(Arrays.asList(strArray)) ;
list.add("1");
System.out.println(list);
} 执行结果:成功追加一个元素“1”。
[null, null, 1]
以上java数组转换成list的注意点,相信大家再遇到此类问题时,就可以使用ArrayList的构造器进行解决。学会后赶快试试这种方法吧。更多Java学习指路:java数组



