Collection在很多情况下需要转换为数组来处理(很多接口方法都使用array作为参数)。
Collection的toArray()方法返回的Object[],是不能被强制转换为子元素类型的
例如:
List l=new ArrayList();
l.add("a");
l.add("b");
String[] strs=(String[])l.toArray();//throw ClassCastException
通常的做法是:
String[] strs=new String[l.size()];
l.toArray(strs);
toArray(T[] a)方法有个比较怪异的地方:
List l=new ArrayList();
l.add("a");
l.add("b");
String[] strs=new String[4];//比List多2个元素
for(int i=0;i<strs.length;i++){//填充4个字符串"x”
strs[i]="x";
}
String[] newStrs=(String[]) l.toArray(strs);
System.out.println(newStrs==strs);//为了确定是否传入的参数对象和返回的是同一个对象。
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}
得到的结果是:
JAVA API文档的说明:
引用
toArray
<T> T[] toArray(T[] a)返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。否则,将根据指定数组的运行时类型和此 collection 的大小分配一个新数组。
如果指定的数组能容纳 collection 并有剩余空间(即数组的元素比 collection 的元素多),那么会将数组中紧跟在 collection 末尾的元素设置为 null。(这对确定 collection 的长度很有用,但只有 在调用方知道此 collection 没有包含任何 null 元素时才可行。)
如果此 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
像 toArray 方法一样,此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许在输出数组的运行时类型上进行精确控制,并且在某些情况下,可以用来节省分配开销。
假定 l 是只包含字符串的一个已知 List。以下代码用来将该列表转储到一个新分配的 String 数组:
String[] x = (String[]) v.toArray(new String[0]);
注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
参数:
a - 存储此 collection 元素的数组(如果其足够大);否则,将为此分配一个具有相同运行时类型的新数组。
返回:
包含此 collection 元素的数组
抛出:
ArrayStoreException - 指定数组的运行时类型不是此 collection 每个元素运行时类型的超类型。
NullPointerException - 如果指定的数组为 null。
分享到:
相关推荐
NULL 博文链接:https://jiaguwen123.iteye.com/blog/1679345
今天小编就为大家分享一篇解决Laravel5.5下的toArray问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。 今天测了一下发现并不是那样 var a = new List(); for (int i = 0; i < 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); ...
蒙哥Q 像这样使用 mongoDB: mongoq("testdb").collection("users").find().toArray().done( function(docs){} ).fail( function(err){} ) ; 基于特征标准【连接字符串格式】【连接字符串】 完整的方法支持可链接的...
jquery.toArray()是将jQuery对象转换成数组,我们来分析下
主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下
本书由浅入深、全面系统地介绍Java编程和开发的方方面面。书中各章提供了大量有针对性的实例,供读者实战演练。...本书非常适合使用Java进行编程和开发的本科生、研究生及教师阅读,还适合广大科研和工程技术人员研读。
(81条消息) GEE(Google Earth Engine) ee_List_sequence、ee_image_toArray(axis)和协方差矩ee_Reducer_centeredCovariance()_此星光明的博客-CSDN博客.mht
它具有标准的API,CBOR标记,重复映射键的选项,float64→32→16, toarray和keyasint等。每个发行版均通过375+次测试和250+百万名执行人员。 ( 和 )是一种受JSON和MessagePack启发的二进制数据格式。 CBOR是的...
tableNames = JSON.parseArray(tables).toArray(tableNames); byte[] data = sysGeneratorService.generatorCode(tableNames); response.reset(); response.setHeader("Content-Disposition", "attachment;...
array $another)void each(array $collection, Closure $iterator)array map(array $collection, Closure $iterator)array toArray(mixed $value)integer|null size(array|Countable $value)array shuffle(array $...
json到数组 将对象转换为数组例子var toArray = require ( 'json-to-array' ) ;console . log ( toArray ( { name : 'luckydrq' , age : 30 } ) ) ; // [[name, 'luckydrq'], [age, 30]]现实世界中的用法您可以将...
C# V4.0 .Net Framework V4.0 System.Array类。
.antMatchers(ArrayUtil.toArray(authUrlWhiteListProperties.getWhiteUrls(), String.class)).permitAll() //开始进入 SecurityContextPersistenceFilter->doFilter方法 FilterSecurityInterceptor 中的doFilter-...
但是像python,是支持多继承(即Mixin模式)。...这就需要使用trait。 trait Arrayabletrait{ public function toArray(){ } ...这种情况可以使用一个基类定义toArray方法,则需要将这类基础方法定
用法很简单,要获取一个集合,请使用linq函数的调用包装所有Iterable,然后根据需要链接其他方法,例如: linq([1, 2, 3, 4, 5]).where(num => num >= 3).select(num => num + 1).toArray(); // [4, 5, 6] 在任何可...
Excel表格中的数据导入到数据库中进行后期的数据操作