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 = ...
随机推荐
- windos下激活python虚拟环境
1.从终端中找到解释器的目录 2.cd到Scripts,输入激活命令activate 这样就表示激活成功了
- LM393双电压比较器集成电路引脚图及功能_工作原理及应用电路
lm393简介 LM393 是双电压比较器集成电路.输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上,不受 Vcc端电压值的限制.此输出能作为一个简单的对地SPS开路(当不用负载电阻没被运用) ...
- c# winform调用osk系统自带软键盘
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- BIP拓展js的使用
__app.define("common_VM_Extend.js", function () { var selectData = null; var common_VM ...
- NC16644【字符串的展开】
正确代码: #include <iostream>#include <algorithm>using namespace std;bool IsSame(char a, cha ...
- 使用moment获取本周、前n周、后n周开始结束日期以及动态计算周数
原文地址 https://blog.csdn.net/qq_43432158/article/details/124200343 项目中有一个需求:需要根据学期时间动态的计算出该学期有多少周 通过上网 ...
- using Spire.Pdf 合并文件夹下.pdf 文件
using Spire.Pdf private void mergePDF() { List<string> filesList = new List<string>(); D ...
- 遮罩DIV遮挡住下面元素 下面元素如何触发响应点击事件
遮罩DIV{ pointer-events: none; }
- java第五周学习情况
这个星期主要是在读<大道至简>这本书,话说这本书确实还行啊.看完之后懂得了很多东西,前天写了一篇读后感,把自己的感想记了下来,以后有机会可以再看一遍.然后就是一些Java的相关知识了.也没 ...
- SecurityRandom随机数生成
package com.netauth.utils; import java.security.SecureRandom; /** * * <p> * SecureRandom随机数生成工 ...