使用集合转数组的方法,必须使用集合的toArray(T[] array), 传入的是类型完全一致、长度为0的空数组。
如果直接使用toArray 无参数方法会存在问题,此方法返回值只能是 Object[]类,若强转其它类型数组将出现 ClassCastException 错误。
代码示例:
public class test03 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(2);
list.add("tao");
list.add("bao");
String[] array = list.toArray(new String[0]);
System.out.println(array.length); //2
System.out.println(list.toArray()); //[Ljava.lang.Object;@1b6d3586
}
}
说明:
1)等于 0,动态创建与size 相同的数组,性能最好。
2)大于 0 但小于 size,重新创建大小等于 size 的数组,增加 GC 负担。
3)等于 size, 在高并发情况下,数组创建完成之后,size 正在变大的情况下,负面影响与上相同。
4) 大于 size, 空间浪费,且在 size 处插入 null 值,存在 NPE 隐患。