toArray有两个方法:不带参数和带参数

public Object[] toArray() {  Object[] result = new Object[size];  System.arraycopy(elementData, 0, result, 0, size);  return result;  }

不带参数的toArray方法,是构造的一个Object数组,然后进行数据拷贝,此时进行转型就会产生ClassCastException(类型转换的锅)。

public Object[] toArray(Object a[]) {  if (a.length < size)  a = (Object[]) java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);  System.arraycopy(elementData, 0, a, 0, size);  if (a.length > size)  a[size] = null;  return a;  }  

带参数的toArray方法,则是根据参数数组的类型,构造了一个对应类型的,长度跟ArrayList的size一致的空数组,虽然方法本身还是以 Object数组的形式返回结果,不过由于构造数组使用的ComponentType跟需要转型的ComponentType一致,就不会产生转型异常。

因此在使用toArray的时候可以参考以下两种方式

String[] str = new String[list.size()];
list.toArray(str);String[] str = (String[])list.toArray(new String[list.size()]);

转载于:https://www.cnblogs.com/wkcode/p/10347183.html

java中的toArray()相关推荐

  1. Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较

    一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...

  2. java中Array和ArrayList区别

    2019独角兽企业重金招聘Python工程师标准>>> 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array". 2)Array([] ...

  3. 【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题

    foreach语句使用总结 增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对 ...

  4. Java中ArrayList源码分析

    一.简介 ArrayList是一个数组队列,相当于动态数组.每个ArrayList实例都有自己的容量,该容量至少和所存储数据的个数一样大小,在每次添加数据时,它会使用ensureCapacity()保 ...

  5. Java中深浅拷贝之List

    List的浅拷贝 浅拷贝将引用复制.指向的是同一个地址,改变A和B中的任何一个,另一个都会随之发生变化. List浅拷贝(针对List里 装的是对象-----"引用"[基础类型不分 ...

  6. Java中实现cd命令:运行中更改当前工作目录

    2019独角兽企业重金招聘Python工程师标准>>> 因为一些原因,想在Java中模拟部分Shell命令的功能,比如cd.pwd.ls等. 实现pwd很简单,返回System.ge ...

  7. 如何在Java中生成特定范围内的随机整数?

    如何生成特定范围内的随机int数值? 我已经尝试了以下方法,但是这些方法不起作用: 尝试1: randomNum = minimum + (int)(Math.random() * maximum); ...

  8. opencv 裁剪 java_如何在opencv java中裁剪检测到的面部图像

    我在 java中使用opencv 2.4.10检测到图像中的面部 我把我的面部检测代码. import org.opencv.core.Core; import org.opencv.core.Mat ...

  9. 5 java中的集合类_java基础(5)-集合类1

    集合的由来 数组是很常用的一种数据结构,但假如我们遇到以下这样的的问题: 容器长度不确定 能自动排序 存储以键值对方式的数据 如果遇到这样的情况,数组就比较难满足了,所以也就有了一种与数组类似的数据结 ...

最新文章

  1. 【网络编程】epoll 笔记
  2. 求马鞍点java_二维数组马鞍点求解算法
  3. 包含min函数的栈 大坑
  4. php 控制304,php静态文件返回304技巧分享
  5. list和tuple
  6. pythonturtle画点的指令_简述python的turtle绘画命令及解释
  7. python怎么打开excel文件并处理_python处理excel文件
  8. 共用体知识及 I - 共用体练习
  9. python药店销售数据分析_解析医院药店销售数据,看看Python数据分析结果有什么惊人的发现|python基础教程|python入门|python教程...
  10. Linux下如何使用gcc编译器,Linux下gcc编译器的使用总结
  11. 重t2加权是什么意思_魔兽世界怀旧服:详解盗贼T2.5套装,别犹豫真香
  12. 射线 ray linerender spotlight
  13. 002 如何将电子版一寸照以照片的方式打印出来
  14. groovy定义变量获取当前时间_groovy变量 - Groovy教程
  15. 计算机桌面来回闪烁,Windows10系统电脑屏幕一直闪烁的解决方案
  16. ansiblea基本使用
  17. IM敏感词算法原理和实现
  18. java long转日期,long转String
  19. pandas 数据怎样实现行间计算
  20. 《C语言基础学习笔记》—— 黑马程序员 <Part1-4>

热门文章

  1. Windows下批处理if exist用法的注意事项
  2. Mysql表连接:内连接、外连接、交叉连接、自然连接真的都不一样吗
  3. 获取不到Gist id?解决gist.github.com无法访问的办法
  4. GPGPU渲染GPU的工作原理和认知总结
  5. CanOpen and EtherCAT
  6. 简单音乐播放器html+css+基础vue+含源码,有搜索和播放mv功能,代码可直接复制用。
  7. 5月份华为认证考试,100%通过率!最高分九百多!
  8. bash alias命令03
  9. 秋招算法岗,面试复盘
  10. 重启mysql的命令 linux_linux重启mysql命令