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()]);

java中的toarray_java中的toArray()相关推荐

  1. java集合总结_Java中集合总结

    Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...

  2. Java IO在Android中应用(三):Apk加固去壳

    Java I/O在Android中应用(三):Apk加固去壳 前言(废话) 现在在动车上,因为最近接到一个紧急的出差任务,需要去一趟江苏我们移动应用的客户现场.说真的,本来其实我是很困的,但是车上有一 ...

  3. Java集合Collection接口中的常用方法演示

    Java集合Collection接口中的常用方法演示 添加 add(Objec tobj) 和 addAll(Collection coll) 获取有效元素的个数 int size() 清空集合 vo ...

  4. Java SE基础(更新中)

    Java的运行机制 Java SE基础(更新中) 基本语法 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的. 类名:对于所有的类来说,类名的首字母应该大写 ...

  5. java string 占位符_驳《阿里「Java开发手册」中的1个bug》?

    前两天写了一篇关于<阿里Java开发手册中的 1 个bug>的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的. 首先来说,无论是那一方,我都真诚的感谢你们.特别是「二师兄」, ...

  6. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  7. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  8. java中JFrame类中函数addWindowListener(new WindowAdapter)

    在java编写的过程中常常遇到样的一段代码 frame.addWindowListener(new WindowAdapter() {@Override public void windowClosi ...

  9. java string与integer_Java中Integer和String浅谈

    http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float ...

最新文章

  1. 99_leetcode_Best Time to Buy and sell Stock
  2. 10.5 Throwable类
  3. 计算机管理器磁盘清理,修复win7提示“windows磁盘空间清理管理器已停止工作”的方法...
  4. 启动tomcat报错,Failed to start component
  5. 冷知识 —— 地名的解释
  6. 一致性Hash与负载均衡
  7. UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 0: ordinal not in range(128)
  8. 微信小程序分享给朋友和分享到朋友圈
  9. 使用pkg打包node应用
  10. 8/30 Hourglass网络原理
  11. 张驰咨询:六西格玛技术在提高抽油机井系统效率中的应用
  12. java 霍夫变换_霍夫变换(Hough Transform)
  13. 图解Oracle数据库(二)
  14. [ Flowable ] 与modeler流程设计器整合教程
  15. 等额本金和等额本息房贷公式推导
  16. andriod TV 获取已连接蓝牙遥控器电池电量总结
  17. U盘安装ubuntu 16.04 遇到 gfxboot.c32:not a COM32R image boot 的解决方法
  18. microbit和python_Microbit MicroPython 介绍
  19. 美团网登录注册教程笔记
  20. Hbase中RowKey的设计原则和热点问题

热门文章

  1. 美摄sdk自定义贴纸
  2. 程序员办公桌都是这么霸气的吗?扫码改需求?
  3. python爬虫可以爬取哪些有用的东西_有哪些网站用爬虫爬取能得到很有价值的数据?...
  4. 都有哪些机型支持鸿蒙,支持鸿蒙系统的手机都有什么
  5. php mongodb 手册,mongodb技术手册 - Lamp资深讲师|lamp小强|linux|php|javascript - OSCHINA - 中文开源技术交流社区...
  6. R 语言并行计算 spearman 相关系数,加快共现网络(co- occurrence network)构建速度
  7. 【Python】set集合详解
  8. 【解决“远程桌面连接:出现身份验证错误,要求的函数不受支持 ”方法】
  9. 激光清洗机适用于哪些行业
  10. 【创建索引的三种方式】