当目标数组的大小较小时,toArray不会复制

时间:2018-02-15 10:06:30

标签: arrays arraylist toarray

我正在使用ArrayList中的toArray()实现,并遇到了一个看起来像是一个问题的场景(在检查apidocs的行为之后)。当我们将一个arraylist复制到一个较小的数组,然后打印出该数组的内容时,它会显示所有条目的空值。我在期待 1.一个例外,表明目标数组不能容纳源数组的所有元素,或者 2.数组只能复制到AL的最大索引。

以下是代码:

import java.util.ArrayList;


public class TestCollections {

  public static void main(String a[]){
    ArrayList<String> arrl = new ArrayList<String>();
    arrl.add("First");
    arrl.add("Second");
    arrl.add("Third");
    arrl.add("Random");
    System.out.println("Actual ArrayList:"+arrl);
    String[] strArrActual = new String[arrl.size()];
    String[] strArrSmaller = new String[arrl.size()-1];
    arrl.toArray(strArrActual);
    arrl.toArray(strArrSmaller);
    System.out.println("Content of actual sized array:");
    for(String str:strArrActual){
        System.out.println(str);
    }
    System.out.println("-----");
    System.out.println("Content of smaller sized array:");
    System.out.println(strArrSmaller.length);
    for(String str:strArrSmaller){
      System.out.println(str);
  }
}
}

以下是输出:

Actual ArrayList:[First, Second, Third, Random]
Content of actual sized array:
First
Second
Third
Random
-----
Content of smaller sized array:
3
null
null
null

我哪里错了?

0 个答案:

没有答案