List集合使用toArray方法转成数组,该方法重载了两种形式,无参的和有参的,有参的又可以指定目的数组的不同长度,根据数组长度和原有List元素个数(size)的比较又可以分为几种情况,每一种方式对性能的影响不一。本文主要以实例结合源码来分析不同情况性能问题,供实际工作和面试时参考。不多说,直接上干货
创建一个简单的List,插入3个元素
List list1 = new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");
方式1:使用无参toArray方法
Object[] arr1 = list1.toArray();
System.out.println("遍历arr1");
for (Object object : arr1) {
//可能会有类型转换错误
Integer i1 = (Integer)object;
System.out.println(i1);
System.out.println(object);
}
该方式只能转成Object类型数组,原有集合指定的泛型消失,相当于类型擦除
隐患:如果拆箱时强转成其他类型,可能会出现ClassCastException,比如代码中的
Integer i1=(Integer)object 而且这种问题编译时不能识别,把问题隐藏到运行时
方式2:使用有参toArray方法
public