ArrayList中的toArray方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList中的toArray方法相关的知识,希望对你有一定的参考价值。

参考技术A 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;

Java学习笔记集合转数组---toArray()

 1 package p2;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.List;
 6 
 7 public class ToArray {
 8 
 9     public static void main(String[] args) {
10         
11         /*
12          * 集合转数组
13          *         使用的是Collection接口中的toArray方法。
14          * 集合转成数组:可以对集合中的元素操作方法进行限定,不允许对其进行增删
15          * 
16          * 
17          * toArrays方法需要传入一个指定类型的数组。
18          * 长度该如何定义呢?
19          * 如果长度小于集合的size,那么该方法就会创建一个同类型并和集合相同size的数组。
20          * 如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为null
21          * 所以建议,最后长度就指定为,集合的size。
22          */
23         
24         List<String> list = new ArrayList<String>();
25         list.add("abc1");
26         list.add("abc2");
27         list.add("abc31");
28         list.add("abc4");
29         
30         String[] arr = list.toArray(new String[list.size()]);
31         System.out.println(Arrays.toString(arr));    //结果:[abc1, abc2, abc31, abc4]
32 
33 
34     }
35 
36 }

 

以上是关于ArrayList中的toArray方法的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记集合转数组---toArray()

java中的toArray(数组名字)是啥意思,要把数组怎么处理?

在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法

ArrayList.toArray() 中的 Java 泛型

转ArrayList的toArray,也就是list.toArray[new String[list.size()]];,即List转为数组

使 arrayList.toArray() 返回更具体的类型