美文网首页
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