Arrays.asList集合转数组结果为null
案例如下:public static void main(String[] args) {List<String> list =new ArrayList<String>(3);list.add ("aa");list.add ("bb");list.add ("cc");String[] array1 = new String[2];list.toArray(array1
·
案例如下:
public static void main(String[] args) {
List<String> list =new ArrayList<String>(3);
list.add ("aa");
list.add ("bb");
list.add ("cc");
String[] array1 = new String[2];
list.toArray(array1) ;
String[] array2 = new String[3];
list.toArray(array2) ;
String[] array3 = new String[4];
list.toArray(array3) ;
System.out.println (Arrays.asList (array1));
System.out.println (Arrays.asList (array2));
System.out.println (Arrays.asList (array3));
}
运行结果如下:

发觉array1转出来的是两个null,array2,array3可以正常转
看了下Arrays.asList源码发现
集合的length如果小于数组size,则重新分配一个空间,复制完成后返回一个新的数组引用,与原来的a无关,length如果大于等于数组size,则集合中的数据复制进入数组即可,返回a,因此array1转化失败,array2,array3可以正常转

更多推荐


所有评论(0)