美文网首页
ArrayList中的toArray方法

ArrayList中的toArray方法

作者: __0123 | 来源:发表于2019-05-30 21:02 被阅读0次

    1. toArray();

    List test = new ArrayList<>();

    for (int i =0; i <10; i++) {

    test .add(i);

    }

    Integer[] res = (Integer[]) test .toArray();

    因为返回的是Object类型数组,所以此处会报错 [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer。

    若想转为Integer数组,则可以用以下方式:

    Object[] testArrays = test.toArray();

    Integer[] res =new Integer[test.length];

    for (int i =0; i < test.length; i++) {

    res[i] = (Integer) test[i];

    }

    此时就不如使用ArrayList中的toArray(T[]  a)方法(后面总结)。

     toArray()方法源码:

    public Object[] toArray() {

    return Arrays.copyOf(elementData, size);

    }

    2. toArray(T[]  a);

    1)

    Integer[] integers =new Integer[5];

    Integer[] res = test .toArray(integers);

    因为此时传入的数组长度小于ArrayList的长度,所以将会直接返回复制ArrayList元素的一个Integer类型数组,不对传入的integers数组操作。

    2)

    Integer[] integers =new Integer[10];

    Integer[] res = test .toArray(integers);

    当数组长度大于等于ArrayList的长度时,会将ArrayList的中元素值复制到integers数组中,最终返回的是先前传入的integers数组。

    T[]toArray(T[] a)的源码如下:

    public T[] toArray(T[] a) {

    if (a.length < size)

    // Make a new array of a's runtime type, but my contents:

            return (T[]) Arrays.copyOf(elementData, size, a.getClass());

        System.arraycopy(elementData, 0, a, 0, size);

        if (a.length >size)

    a[size] =null;

        return a;

    }

    相关文章

      网友评论

          本文标题:ArrayList中的toArray方法

          本文链接:https://www.haomeiwen.com/subject/osjbtctx.html