ArrayList 的toArray的转换数组方法的注意事项
ArrayList 的toArray的转换数组方法的注意事项
toArray()一共有两个方法 toArray(T[] a) 和toArray() 源码是

进行使用toArray()方法时候,使用 (String[]) 强转会出现 java.lang.ClassCastException 转换异常

toArray()返回的数组是Object[] 数组,不能使用 (String[]) 强转的方法强转数组内的元素。不带参数的toArray方法,是构造的一个Object数组,然后进行数据拷贝,此时进行转型就会产生ClassCastException转换异常
java中的强制类型转换只是针对单个对象的,想要偷懒,将整个数组转换成另外一种类型的数组是不行的,这和数组初始化时需要一个个来也是类似的。
用Object[]数组来接收返回值,不进行强转,对于String 也是可以输出值的


toArray(T[] a) 方法 源码
@SuppressWarnings("unchecked")
public <T> 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;
}
1..当参数数组的长度不小于集合中元素的个数的时候,将集合中的元素按顺序拷贝到参数数组中,并且如果参数数组的长度大于集合中元素的个数的时候, a[size] = null;-------接跟着拷贝后最后一个元素的数组项会被设置为null(参数数组中的数据项是发生了改变了的).
2.当参数数组的长度小于集合中元素的个数的时候,重新分配一个长度和集合中元素的个数相同的新数组,然后将集合中的元素全部拷贝到这个新数组中,并返回这个新数组,新数组的类型和参数类型是一致的(参数数组中的数据项是没有任何改变的)。
3.需要注意的是toArray(new Object[0])和toArray()产生的效果是一模一样的。
String[] strings1 =strings.toArray(new String[0]);
Arrays.sort(strings1);
for (String s:strings1){
System.out.println(s);
}
ArrayList 的toArray的转换数组方法的注意事项的更多相关文章
- linux下php中文UTF-8转换Unicode方法和注意事项
先说下遇到问题:1.php没有内置unicode_ecode函数可以直接使用 2.网上很多资料都是用$str = iconv($encoding, 'UCS-2', $str); window下转换出 ...
- 【转载】 C#中ArrayList使用ToArray方法转换为数组
在C#的编程开发中,ArrayList集合是一个常用的非泛型类集合,可以使用ArrayList中的ToArray方法将ArrayList集合对象转换为数组,ToArray方法有2个重载形式,其一为vi ...
- java关于ArrayList中toArray方法的使用
先来看下面这段程序 Collection collect= new ArrayList(); collect.add("小黑"); collect.add("小白 ...
- 【转】ArrayList的toArray,也就是list.toArray[new String[list.size()]];,即List转为数组
[转]ArrayList的toArray ArrayList提供了一个将List转为数组的一个非常方便的方法toArray.toArray有两个重载的方法: 1.list.toArray(); 2.l ...
- XML转换成数组方法
<?php function xmlToArray2($xml) { // 将XML转为array $array_data = json_decode(json_encode(simplexml ...
- 集合转换为数组toArray(),数组转换为集合asList()
package seday12; import java.util.ArrayList;import java.util.Arrays;import java.util.Collection; /** ...
- 【转】ArrayList的toArray
[转]ArrayList的toArray ArrayList提供了一个将List转为数组的一个非常方便的方法toArray.toArray有两个重载的方法: 1.list.toArray(); 2.l ...
- js与jquery常用数组方法总结
昨天被问数组方法的时候,问到sort()方法是否会改变原来的数组.本来我猜是不会,也是这么说,马上我又觉得,知识这种东西,不确定的时候直接说不确定或不知道就好,只是凭借着不确定的猜测或者是记忆,害人害 ...
- ES6的数组方法之Array.from
首先说说什么是数组:数组在类型划分上归为Object,属于比较特殊的对象,数组的索引值类似于对象的key值. 数组的几个注意点: 1.数组的长度是可读属性,不可更改,数组的长度根据索引最大值. 2.数 ...
- JavaScript之数组方法整理
Array概述 除了Object类型,最常用的类型: 实质:有序的数据列表, 特性:可以动态的调整数组的大小 创建数组的两种方式 构造函数创建方式 var arr = ...
随机推荐
- js中的this的指向问题
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调 ...
- String类对象的常用操作及方法
在Java中,String类包含有50多个方法来实现字符串的各种操作,以下介绍一些我们需要经常使用的方法.1.字符串的连接public String concat(String str) 该方法的参数 ...
- 把linux云服务器上的文件放到本地电脑windows上-----secureCRT
1.本地电脑需要安装SecureCRT 2.在secureCRT上登录云端服务器,右键点击云端服务器上方的ip地址,选择"connect SFTP session" 3.在SFTP ...
- BIP去掉弹框中的参照的新增按钮
viewModel.get("material_class_name").on("afterInitVm", function (arg) { ...
- Vulnhub 靶场 HACK ME PLEASE: 1
Vulnhub 靶场 HACK ME PLEASE: 1 一.前期准备 靶机下载地址:https://www.vulnhub.com/entry/hack-me-please-1,731/ 攻击机ka ...
- /usr/bin/install: cannot create regular file `/usr/local/jpeg6/include/jconfig.h'
出现下列异常: /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h /usr/bin/install: ca ...
- redis 和docker等名词了解
redis redis产生 redis是MySQL数据库经常直接面对大量的读写访问,面对比较复杂的数据据操作,会导致数据库I/O反映缓慢或者奔溃: 有人研究学习CPU从内寸直接读取数据,把MYSQL经 ...
- spring缓存创建
/** * * <b>创建缓存</b> * <p> * 创建缓存,若已存在直接返回. * <p> * @param cacheName * @retur ...
- SPI接口(续一)
SPI接口共涉及到11个寄存器,下面就来对它们进行具体分析. 先来看SPI配置寄存器CFG,下表是它的全部位结构,其地址分别为0x40058000(SPI0),0x4005C000(SPI1). (1 ...
- mybatis获取参数值的方式
示例: 总结: