ArrayList中的toArray方法

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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容