正确使用List.toArray()
2006-05-22 17:43
344 查看
正确使用List.toArray()
在程序中,往往得到一个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
究竟这个是如何产生的,且看代码:
-------------------------------------------------------------------------------
----
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 , 使用的时候要注意。
在程序中,往往得到一个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
究竟这个是如何产生的,且看代码:
-------------------------------------------------------------------------------
----
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 , 使用的时候要注意。
相关文章推荐
- 如何正确使用List中的toArray()方法
- List的toArray方法的使用方法以及强制转换时的报错问题
- List中toArray()的使用方法
- List.toArray的使用
- stl 中list 或者vector正确使用find查找类对象
- Delphi中GDI+和ImageList使用的正确姿势
- 正确使用ArrayList和LinkedList—性能的改进
- 如何正确使用List<?>
- 正确使用ArrayList和LinkedList—性能的改进
- List中toArray()的使用方法
- 使用原生sql查询数据返回object类型list时,转换数据列出现转换类型错误(但写法正确)
- 如何正确使用List
- java 使用LinkedList模拟一个堆栈或者队列数据结构
- 使用 forEachIndexed 带下标遍历 list;这样我们可以使用 forEach 来修改 list 的元素了
- 浅谈如何在C#Winform程序中正确使用登录窗体
- 如何正确使用Toast进行用户提醒
- C++ 标准库 vector list map使用方法
- va_list、va_start、va_arg、va_end的原理与使用(转载)
- TOMCAT监控工具Probe的正确安装与使用(注:互联网资料整理而成)
- 运放中不使用引脚正确处理方式