`

toArray()方法,但是要使用不好,就会有ClassCastExceptiony异常

阅读更多

在程序中,我们往往要把一个List(ArrayList or LinkedList)对应赋值给一个Array,
这是可以用List提供的toArray()方法。

但是要使用不好,就会有ClassCastExceptiony异常。
看以下代码:

   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[] longArray = (Long[])list.toArray(); //抛出java.lang.ClassCastException
   for(int i=0; i<longArray.length; i++)
       System.out.println(longArray[i].longValue());

原因是java中的强制类型转换只是针对单个对象的,
将整个数组转换成另外一种类型的数组是不行的。

toArray()正确使用方式如下:

   1) Long[] longArray = new Long[list.size()];
          list.toArray(longArray);

   2) Long[] longArray = (Long [])list.toArray(new Long[0]);

   3) Long[] a = new Long[list.size()];
          Long [] longArray = (Long [])list.toArray(a);

分享到:
评论

相关推荐

    list.toArray方法

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

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

    尽管`List&lt;T&gt;` 在内部确实使用了一个数组(`_items`)来存储元素,但`ToArray()` 方法并不像我们可能想象的那样简单地返回该数组的引用。实际上,当调用`ToArray()` 时,它会创建一个新的数组,并将`List&lt;T&gt;` 中的...

    解决Laravel5.5下的toArray问题

    通常,在使用查询构建器时,开发者会使用`DB::table()-&gt;get()-&gt;toArray()`这样的链式调用,将结果集转化为数组。但是,有时候开发者可能对结果集的数组格式有特别的需求。 本文作者是一位对ThinkPHP框架有较深了解...

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

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

    jQuery学习笔记之toArray()

    `call()`方法允许我们将任何对象作为`slice()`方法的`this`值,这样`slice()`就会在这个新的上下文中运行。 `slice()`方法本身用于从数组中提取一部分元素并返回一个新的数组。当我们在jQuery对象上调用`slice()`并...

    dotnet C# 多线程集合的 Linq 获取值同时写入集合将会抛出异常.rar

    3. **使用`ToList()`或`ToArray()`**:在执行Linq查询前,先将集合转换为一个新的列表或数组,这样就可以确保查询时不会受到后续修改的影响。 4. **避免在迭代过程中修改集合**:如果可能,尽量避免在遍历集合时对...

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

    Capacity 属性是目前 ArrayList 能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于 Count 值的时候会引发一个异常。 4. Add、AddRange、Remove、RemoveAt、RemoveRange、Insert、InsertRange 方法 ...

    JAVA AbstractCollection类的使用方法.pdf

    如果集合的迭代顺序有特定保证,返回的数组也会保持相同的顺序。 4. **异常处理**: - `contains`方法可能会抛出`ClassCastException`,如果指定的元素类型与集合不兼容。同时,如果指定元素为空且集合不允许空...

    往Combox中添加项的两种方法

    当需要一次性添加大量项时,使用`Items.AddRange()`方法会更高效。假设我们有已准备好的`List&lt;string&gt;`对象`itemList`,可以这样操作: ```csharp comboBox1.Items.AddRange(itemList.ToArray()); ``` 此方法将...

    从C#中的数组中删除指定元素的几种方法,超简单

    这里可以使用Where方法筛选出不包含目标值的元素,然后使用ToArray将其转换回数组。这种方法代码简洁,但处理大量数据时可能效率较低。 ```csharp int[] numbers = { 1, 3, 4, 5, 4, 2 }; int valueToRemove = 5...

    .Net Framework 各种类型转换方法

    需要注意的是,如果字符串格式不正确或者不能被转换成指定类型时,会抛出异常。因此,在调用 `Parse` 之前最好先进行有效性检查。此外,`ToString` 方法可以将其他类型的数据转换为字符串: ```csharp int a = 123;...

    excelToArray

    在IT领域,将Excel表格中的数据导入到数据库是常见的数据处理任务,这有助于对大量结构化数据进行高效管理和分析。"excelToArray"这个标题暗示了我们正在讨论将Excel表格转换为数组,然后可能进一步处理这些数据,...

    List转换成String数组

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

    SUN Java Code Specification.rar_编码规范

    2. 避免使用`Collection.toArray()`:优先使用`toArray(T[] array)`,以避免创建不必要的数组。 3. 使用`List`而非`ArrayList`或`LinkedList`:在不确定具体实现需求时。 八、并发编程 1. 使用`synchronized`关键字...

    javascript文档

    请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表...

    EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用(包含完整示例源码)

    在EF中,当使用`ToList()`、`ToArray()`等方法时,如果数据量大,可能会导致内存溢出。而通过`yield`关键字配合`IEnumerable`接口,可以实现延迟执行,仅在遍历时才执行查询,显著提高了性能。 例如,以下是一个...

    C# 中使用matlab参数传递

    ### C# 中使用 MATLAB 参数传递详解 #### 一、引言 在跨语言编程中,尤其是在需要高性能计算或科学计算的场景下,MATLAB 与 C# 的结合使用变得日益重要。C# 是一种现代、面向对象的编程语言,而 MATLAB 则以其强大...

    list常用方法

    ### List常用方法详解 在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能...

    C# 生成xml文件,编码为utf-8方法

    最后,使用 MemoryStream 对象的 ToArray 方法将 XML 数据转换为 byte 数组,然后使用 Encoding.UTF8.GetString 方法将其转换为 UTF-8 编码的字符串。 在上面的代码中,首先创建了一个 MemoryStream 对象,然后创建...

Global site tag (gtag.js) - Google Analytics