`
senton
  • 浏览: 200049 次
  • 性别: Icon_minigender_1
  • 来自: 紫禁城
社区版块
存档分类
最新评论

如何正确使用List中的toArray()方法

    博客分类:
  • J2SE
 
阅读更多
 
在程序中,往往得到一个List, 程序要求对应赋值给一个array, 可以这样写程序,for example:
Long[] l = new Long[list.size()];
for(int i=0;i<list.size();i++ ){
l[i] = (Long) list.get(i);
}
要写这些code,似乎比较繁琐, 其实List提供了toArray()的方法,但是要使用不好,就会有ClassCastException 究竟这个是如何产生的,本文就是教你如何使用toArray()方法,且看代码:
List list = new ArrayList();
list.add(new Long(1));
list.add(new Long(2));

list.add(new Long(3));
list.add(new Long(4));
Long[] l = (Long[])list.toArray();
for(int i=0; i<l.length; i++){
     System.out.println(l[i].longValue());
}
-----------------------------------------------------------------
红色代码会抛java.lang.ClassCastException。 当然,为了读出值来,你可以这样code:
Object[] a = list.toArray();
for(int i=0;i<a.length;i++){
     System.out.println(((Long)a[i]).longValue());
}
-----------------------------------------------------------------
但是让数组丢失了类型信息,这个不是我们想要得。
正确使用方式:
-----------------------------------------------------------------
1.
Long[] l = new Long[<total size>];
list.toArray(l);
2.
Long[] l = (Long[]) list.toArray(new Long[0]);

3.
Long[] a = new Long[<total size>];
Long[] l = (Long[]) list.toArray(a);
-----------------------------------------------------------------

java sdk doc 上讲:
public Object[] toArray(Object[] a) a--the array into which the elements of this list are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. 如果这个数组a足够大,就会把数据全放进去,返回的数组也是指向这个数组;要是不够大,就申请一个跟参数同样类型的数组,把值放进去,然后返回。
注意的是:你要是传入的参数为9个大小,而list里面有5个object,那么其他的四个很可能是null , 使用的时候要注意,一不小心就是NullPointException。
 
分享到:
评论

相关推荐

    list.toArray方法

    NULL 博文链接:https://jiaguwen123.iteye.com/blog/1679345

    关于List.ToArray()方法的效率测试

    之前一直认为因为List内部实现是数组,ToArray的实现只是将数组返回出去而已。 今天测了一下发现并不是那样 var a = new List(); for (int i = 0; i &lt; 10000; i++) { a.Add(i); } DebugHelper.StartWatch(); ...

    C#中List和数组之间转换的方法

    本文实例讲述了C#中List和数组之间转换的方法。分享给大家供大家参考。具体分析如下: 一、List转数组 (从List转到string[]) List&lt;string&gt; listS=new List(); listS.Add(str); listS.Add(hello); string[] str=...

    js模拟list和map

    java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 &lt;br&gt;List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 removeAll() //删除所有...

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    主要介绍了Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析的相关资料,需要的朋友可以参考下

    (81条消息) GEE(Google Earth Engine) ee_List_sequence、ee_image_toArray(axis)和协方差矩ee_Reducer_centeredCovariance()_此星光明的博客-CSDN博客.mht

    (81条消息) GEE(Google Earth Engine) ee_List_sequence、ee_image_toArray(axis)和协方差矩ee_Reducer_centeredCovariance()_此星光明的博客-CSDN博客.mht

    C#查找列表中所有重复出现元素的方法

    本文实例讲述了C#查找列表中所有重复出现元素的方法。分享给大家供大家参考。具体实现方法如下: public T[] GetDuplicates(T inputValue) { List&lt;T&gt; duplicates = new List( ); for (int i = 0; i &lt; this....

    TextBox拼音检索(textBox重新封装)源码

    TextBox控件重新封装(源代码网上找的),自己重新封装方便使用; 使用步骤: 1,加载dll文件;... return list.ToArray(); } 4,数据源绑定: spellSearchBoxExSS1.SpellSearchSource = GetSpellBoxSource(dt);

    javascript文档

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    解决Laravel5.5下的toArray问题

    今天小编就为大家分享一篇解决Laravel5.5下的toArray问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    jQuery学习笔记之toArray()

    jquery.toArray()是将jQuery对象转换成数组,我们来分析下

    微软JavaScript手册

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    JScript 语言参考

    getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份...

    List_for_FP:用于函数编程的列表数据结构

    rest $List.prototype.length $List.prototype.toString $List.prototype.reverse $List.prototype.slice $List.prototype.ref $List.prototype.append $List.prototype.toArray $List.prototype.forEach $List....

    关于列表有用的一些方法.pptx

    3.如果列表中的元素是可比较大小的,则可用Java.util.Collections类中的静态方法sort(列表)方法进行排序 Collections.sort(list); System.out.println(list); ;4.求最大最小值 Collections类中的静态方法max(列表)...

    leetcode2-node-leetcode:Leetcode辅助库,例如createList,Treefromarray

    ListNode构造函数,用于在列表中创建节点。 ListNode.prototype.toArray 将列表转换为数组。 通常用于调试。 var List = require ( 'leetcode' ) . List ; // { val: 1, next: { val: 2, next: { val: 3, next: null...

    javascript语言参考+教程 CHM

    toArray 方法; toDateString 方法; toExponential 方法; toFixed 方法; toGMTString 方法; toLocaleDateString 方法; toLocaleLowerCase 方法; toLocaleString 方法; toLocaleTimeString 方法; ...

Global site tag (gtag.js) - Google Analytics