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(数组名字)是啥意思,要把数组怎么处理?
在 return 语句中找不到适合 ArrayList<String> .toArray(String[]::new) 的方法
ArrayList.toArray() 中的 Java 泛型
转ArrayList的toArray,也就是list.toArray[new String[list.size()]];,即List转为数组