数组的长度是不能动态变化的,可以先定义集合,然后转换为数组。
Collection变成数组(toArray()与toArray(T[] a)) A. 为什么要将Collection集合变成数组呢? 为了限定对集合的操作,不需要对集合进行增删操作。 B. 指定类型的数组到底定义多长呢? 当指定类型的数组长度小于集合的size,那么该方法内部会重新创建一个数组,新创建的数组长度为集合的size。这样一来,原先传递进来的数组就无效,会浪费内存。 当指定类型的数组长度大于利集合的size,就不会重新创建数组,而是使用传递进来的数组。 综上两点,创建一个与集合的size一样长的数组最优。 import java.util.*; public class Test { public static void main(String[] args) { Collection<String> collection = new ArrayList<String>(); collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); /* * 传递进toArray方法的数组长度为1,小于Collection的size。 * toArray方法内部重新创建了一个数组。 */ String[] arr1 = collection.toArray(new String[1]); System.out.println("arr1="+Arrays.asList(arr1)); String[] arr2 = collection.toArray(new String[5]); System.out.println("arr2="+Arrays.asList(arr2)); } } | 打印结果: arr1=[aaa, bbb, ccc] arr2=[aaa, bbb, ccc, null, null] |
|