`
senton
  • 浏览: 206007 次
  • 性别: 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转换成string数组

    如果不确定列表的大小或者想要更简洁的代码,可以直接传递一个空的`String`数组给`toArray`方法,Java会自动创建一个正确大小的数组。 ```java import java.util.ArrayList; import java.util.Arrays; public ...

    String[] list 相互转化

    要将一个 `List` 对象转换成 `String[]` 数组,可以使用 `List` 的 `toArray` 方法。此方法允许传入一个指定类型的数组作为参数,并返回一个包含列表元素的新数组。需要注意的是,传入的数组类型必须与期望的输出...

    java List、Set与Array之间的相互转换

    - **List转Array**: 要将List转换回Array,你可以使用`toArray()`方法。首先,你需要创建一个目标类型的空数组,然后调用`toArray()`方法传入这个数组。例如: ```java String[] newArray = new String[list.size...

    java传list给存储过程,项目提取,不忽悠

    Java的`toArray()`方法可以实现List到数组的转换。 5. **设置参数**: 使用`CallableStatement`的`setObject()`方法为每个参数设置值,参数位置通常从1开始计数。对于List,需要遍历数组并逐个设置。 6. **执行...

    java中数组列表arraylist的使用.docx

    ### Java中数组列表ArrayList的使用详解 #### 一、ArrayList简介 `ArrayList`是Java集合框架中的一个重要组成部分,属于`List`接口的一种实现。...在Java开发中,正确理解和使用`ArrayList`是非常重要的。

    .Net Framework 各种类型转换方法

    3. **使用 `ToArray` 和 `ToList` 方法**:这些方法可以直接将集合转换为数组或列表: ```csharp List&lt;int&gt; list = new List(new int[] { 1, 2 }); int[] array = list.ToArray(); ``` 4. **多维数组到一维数组...

    Java中List与数组相互转换实例分析

    在Java编程中,List和数组是两种常见的数据结构,它们各有特点,但有时我们需要在两者之间进行转换。...通过正确使用`toArray(T[] a)`方法和`Arrays.asList()`,可以有效地在List和数组之间进行安全转换。

    Java集合List与Array的相互转换

    在Java中,List接口提供了一个`toArray(T[] array)`方法,用于将List转换为指定类型的数组。这个方法需要一个参数,即目标类型的数组实例,数组的大小应等于List的大小。如果传入的数组大小小于List的大小,系统会...

    Java 实例 - 集合转数组源代码+详细指导教程.zip

    2. **填充数组**:然后,你可以使用集合的toArray()方法将集合中的元素填充到新创建的数组中。此方法将返回一个Object数组,因此需要进行类型转换。以下是如何执行此操作的示例: ```java List&lt;String&gt; collection ...

    Java集合知识测试B.doc

    4. 将集合转换为数组可以使用`toArray()`方法(c正确)。 5. `iterator()`方法是集合接口的一个重要方法,它返回一个Iterator对象,用于遍历集合中的元素(c正确)。 6. 并发修改异常通常发生在多线程环境下,当一...

    DEV控件中的ComboBoxEdit控件如何绑定数据库中的数据

    在本篇内容中,我们将详细探讨如何在DEV控件中使用ComboBoxEdit控件与数据库进行交互,特别是如何实现数据的绑定。根据提供的标题、描述、标签以及部分内容,我们可以提炼出以下核心知识点: ### 核心知识点一:...

    Java编程中常见的坑

    将集合转换回数组时,应使用`toArray()`方法。需要注意的是,无参数的`toArray()`方法返回的是`Object[]`类型,如果想要转换为其他类型的数组,需要指定类型。 **示例代码**: ```java List&lt;Integer&gt; list = Arrays...

    2023年Java集合知识测试B.doc

    Java集合知识测试B 本资源摘要信息涵盖了Java集合知识的多个方面,包括集合和数组的区别、Collection接口的方法、ArrayList和LinkedList的特点、队列的特点、泛型的使用等...可以使用toArray()方法将集合转换成数组。

    Java随机产生数组元素并无重复元素方法

    在Java编程中,生成一个包含不重复随机元素的数组是一个常见的需求,特别是在模拟、测试或者游戏开发等场景中。...例如,如果在多线程环境中,可能需要使用线程安全的数据结构或同步机制来确保正确性。

    JAVA的多条件模糊查询

    通过上述示例我们可以看到,在Java中实现多条件模糊查询并不复杂,关键在于动态构建SQL语句以及正确使用`JdbcTemplate`进行参数绑定。当然,在实际项目中还可能涉及到更复杂的查询逻辑和更高级的异常处理策略。但...

    IO2+泛型+集合.docx

    4. 在读取过程中,使用`read()`方法获取文件内容的字节,然后用`write()`方法将字节写入目标文件,直到没有更多数据可读(`read()`返回-1)。 5. 最后,确保所有打开的流在操作完成后都会被正确关闭,以防止资源泄漏...

    读写Excel(适用于SliverLight)的3中方法

    此外,还需要编写一个用于格式化CSV字段的方法,以确保数据可以正确地导出到CSV文件中: ```csharp private static string FormatCSVField(string data) { return String.Format("\"{0}\"", data.Replace("\"", "\...

    java集合PPT教案学习.pptx

    本教案主要讲解Java集合框架的基本概念和使用方法,涵盖了集合的体系结构、Collection接口、List接口、ArrayList类等内容。 Collection体系结构: * 集合框架的目的:解决复杂的存储问题 * 集合框架的优点:灵活...

    Java集合知识测试B.pdf

    4. **集合转数组**:将集合转换为数组的方法是`toArray()`,而不是`toCharArray()`或`getBytes()`,`size()`是获取集合元素数量的方法。 5. **iterator()方法**:`iterator()`方法的主要功能是获取迭代器对象,用于...

    Unity3D中网格合并示例研究2

    然后,创建CombineInstance对象并设置其对应信息,最后使用CombineMeshes方法创建一个新的合并后的Mesh,并将其应用于新创建的SkinnedMeshRenderer。 总结来说,理解网格和材质的对应关系,以及在合并网格时正确...

Global site tag (gtag.js) - Google Analytics