`
akunamotata
  • 浏览: 378719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

arrayList.toArray()的用法

    博客分类:
  • java
阅读更多

下面是ArrayList的两个toArray()方法的源代码:

public Object[] toArray() {
   Object[] result = new Object[size];   
   System.arraycopy(elementData, 0, result, 0, size);   
   return result;
}
public Object[] toArray(Object a[]) {   
if (a.length < size)       
a = (Object[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);       System.arraycopy(elementData, 0, a, 0, size);   
if (a.length > size)       
a[size] = null;   
return a;
}

可以看出,不带参数的toArray方法,是构造的一个Object数组,然后进行数据拷贝,此时进行转型就会产生ClassCastException
而带参数的toArray方法,则是根据参数数组的类型,构造了一个对应类型的,长度跟ArrayList的size一致的空数组,虽然方法本身还是以 Object数组的形式返回结果,不过由于构造数组使用的ComponentType跟需要转型的ComponentType一致,就不会产生转型异常
正确的方式
1. Long[] l = (Long []) list.toArray(new Long[0]);

2. Long [] a = new Long[<total size>];
    Long [] l = (Long []) list.toArray(a);
2要注意的是:你要是传入的参数为9个大小,而list里面有5个object,那么其他的四个很可能是null , 使用的时候要注意。

 

转贴:http://hi.baidu.com/penning/blog/item/00a4f8dc2b4e8ea1cd11668c.html

 

 

分享到:
评论

相关推荐

    list.toArray方法

    `toArray()`方法的基本用法如下: ```java List&lt;String&gt; list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); // 调用toArray()方法,返回一个Object数组 Object[] array = list.toArray(); ``...

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

    Java ArrayList 类中的 `toArray(T[])` 方法的参数类型使用 `T` 而不是 `E`,这在初看之下似乎违背了泛型的主要目的——提供类型安全。然而,这样的设计实则是为了增加代码的灵活性和实用性。让我们深入探讨一下其中...

    java中数组列表ArrayList的使用.doc

    Java 中数组列表 ArrayList 的使用 ArrayList 是 Java 中的一种...此外,ArrayList 还有很多其他的方法和属性,例如 Clear、Contains、IndexOf 等,大家可以查看 MSDN,了解更多关于 ArrayList 的使用方法和技巧。

    Java中ArrayList类的用法.pdf

    同时,你可以通过`Add`方法连续添加元素,或者通过`ToArray`方法将ArrayList转换为特定类型的数组: ```java for (int i = 0; i ; i++) list.add(i + 20); Int32[] values = (Int32[])list.toArray(new Int32[0]);...

    arraylist用法

    `ToArray`方法可以将`ArrayList`转换为数组。需要注意的是,转换时必须指定目标数组的类型,否则会导致类型不匹配的异常。例如: ```csharp ArrayList list = new ArrayList(); list.Add(1); list.Add(2); ...

    Java中ArrayList类的用法.docx

    ### Java中ArrayList类的用法详解 #### 一、ArrayList的概念 `ArrayList`是Java集合...通过本文介绍的基本使用方法以及关键属性和方法,您可以更好地理解和使用`ArrayList`,以解决实际编程中的数据存储和管理问题。

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

    - `ToArray`方法:将`ArrayList`转换为数组。 #### 五、示例代码解析 以下是一些具体的示例代码: ```java // 创建并初始化ArrayList ArrayList&lt;Integer&gt; list = new ArrayList(); list.add(1); list.add(2); ...

    ArrayList深度剖析与简单实用

    若要使ArrayList在线程之间同步,可使用`ArrayList.Synchronized()`静态方法创建一个线程安全的包装实例。但要注意,这并不保证枚举操作的同步,枚举时仍需手动锁定。 - **Count属性和Capacity属性**:Count属性...

    java ArrayList的使用与分析

    - **转换为数组**:如示例所示,可以使用 `toArray` 方法将 ArrayList 转换为数组:`Int32[] values = (Int32[])list.toArray(new Int32[0]);` - **从数组创建 ArrayList**:`ArrayList list = new ArrayList...

    C#ArrayList用法

    需要注意的是,尽管使用此方法创建的`ArrayList`是线程安全的,但在进行枚举时仍然需要显式锁定`SyncRoot`属性以避免异常。 ##### 3. Count 和 Capacity 属性 - **Count**: 表示当前`ArrayList`中元素的数量,只读...

    C# 详细的解说了关于ArrayList的用法

    ArrayList本身不支持排序,但可以使用Sort方法配合IComparer接口或Array的Sort方法实现: ```csharp myList.Sort(); // 对可比较对象进行升序排序,否则会抛出异常 ``` 10. 转换为其他类型 ArrayList可以转换为其他...

    java中数组列表ArrayList的使用[归类].pdf

    下面将详细讨论ArrayList的使用、重要方法和属性,以及与数组之间的转换。 1. **ArrayList的基本概念** - ArrayList是一种动态数组,它允许我们在运行时动态地添加或删除元素,而无需预先知道数组的精确大小。 - ...

    java中ArrayList的用法

    1. 使用`toArray()`方法,它可以接受一个类型参数来决定返回数组的类型。 ```java ArrayList&lt;Integer&gt; list = new ArrayList(); list.add(1); list.add(2); Integer[] array = list.toArray(new Integer[0]); ...

    Java中ArrayList类的用法知识.pdf

    - 可以通过`ToArray`方法将ArrayList转换为数组,如示例所示,需要指定目标类型。 - 数组也可以转换为ArrayList,如`ArrayList list = new ArrayList(array);` 5. **线程安全与性能** - 默认情况下,ArrayList...

    Arraylist 的用法

    ### ArrayList的用法详解 #### 一、简介与特点 `ArrayList`是.NET框架中一个非常重要的类,属于`System.Collections`命名空间。正如标题所言,“ArrayList就是传说中的动态数组”,它实质上是对传统静态数组的一个...

    C#中Array与ArrayList用法及转换的方法

    ArrayList与Array的区别概述  ArrayList 是数组的复杂版本。ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能。... 使用 Synchronized 方法可以很容易地创建 ArrayList 的同步

    List转换成String数组

    **方法一:使用toArray()方法** ```java List&lt;String&gt; list = new ArrayList(); list.add("a1"); list.add("a2"); // 使用toArray()方法,传入一个大小等于list.size()的String数组 String[] toBeStored = list....

    ArrayList源码分析.docx 等

    为了解决这个问题,可以使用 `Collections.synchronizedList` 将 ArrayList 包装成线程安全的列表,但请注意,这种方法只保证了基本的线程安全性,对于迭代操作仍然需要额外的同步措施。 面试中,ArrayList 通常会...

Global site tag (gtag.js) - Google Analytics