在程序中,我们往往要把一个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);
分享到:
相关推荐
这就需要用到toArray()方法。 `toArray()`方法的基本用法如下: ```java List<String> list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); // 调用toArray()方法,返回一个Object数组 Object...
尽管`List<T>` 在内部确实使用了一个数组(`_items`)来存储元素,但`ToArray()` 方法并不像我们可能想象的那样简单地返回该数组的引用。实际上,当调用`ToArray()` 时,它会创建一个新的数组,并将`List<T>` 中的...
通常,在使用查询构建器时,开发者会使用`DB::table()->get()->toArray()`这样的链式调用,将结果集转化为数组。但是,有时候开发者可能对结果集的数组格式有特别的需求。 本文作者是一位对ThinkPHP框架有较深了解...
Java ArrayList 类中的 `toArray(T[])` 方法的参数类型使用 `T` 而不是 `E`,这在初看之下似乎违背了泛型的主要目的——提供类型安全。然而,这样的设计实则是为了增加代码的灵活性和实用性。让我们深入探讨一下其中...
`call()`方法允许我们将任何对象作为`slice()`方法的`this`值,这样`slice()`就会在这个新的上下文中运行。 `slice()`方法本身用于从数组中提取一部分元素并返回一个新的数组。当我们在jQuery对象上调用`slice()`并...
3. **使用`ToList()`或`ToArray()`**:在执行Linq查询前,先将集合转换为一个新的列表或数组,这样就可以确保查询时不会受到后续修改的影响。 4. **避免在迭代过程中修改集合**:如果可能,尽量避免在遍历集合时对...
Capacity 属性是目前 ArrayList 能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于 Count 值的时候会引发一个异常。 4. Add、AddRange、Remove、RemoveAt、RemoveRange、Insert、InsertRange 方法 ...
如果集合的迭代顺序有特定保证,返回的数组也会保持相同的顺序。 4. **异常处理**: - `contains`方法可能会抛出`ClassCastException`,如果指定的元素类型与集合不兼容。同时,如果指定元素为空且集合不允许空...
当需要一次性添加大量项时,使用`Items.AddRange()`方法会更高效。假设我们有已准备好的`List<string>`对象`itemList`,可以这样操作: ```csharp comboBox1.Items.AddRange(itemList.ToArray()); ``` 此方法将...
这里可以使用Where方法筛选出不包含目标值的元素,然后使用ToArray将其转换回数组。这种方法代码简洁,但处理大量数据时可能效率较低。 ```csharp int[] numbers = { 1, 3, 4, 5, 4, 2 }; int valueToRemove = 5...
需要注意的是,如果字符串格式不正确或者不能被转换成指定类型时,会抛出异常。因此,在调用 `Parse` 之前最好先进行有效性检查。此外,`ToString` 方法可以将其他类型的数据转换为字符串: ```csharp int a = 123;...
在IT领域,将Excel表格中的数据导入到数据库是常见的数据处理任务,这有助于对大量结构化数据进行高效管理和分析。"excelToArray"这个标题暗示了我们正在讨论将Excel表格转换为数组,然后可能进一步处理这些数据,...
**方法一:使用toArray()方法** ```java List<String> list = new ArrayList(); list.add("a1"); list.add("a2"); // 使用toArray()方法,传入一个大小等于list.size()的String数组 String[] toBeStored = list....
2. 避免使用`Collection.toArray()`:优先使用`toArray(T[] array)`,以避免创建不必要的数组。 3. 使用`List`而非`ArrayList`或`LinkedList`:在不确定具体实现需求时。 八、并发编程 1. 使用`synchronized`关键字...
请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表...
在EF中,当使用`ToList()`、`ToArray()`等方法时,如果数据量大,可能会导致内存溢出。而通过`yield`关键字配合`IEnumerable`接口,可以实现延迟执行,仅在遍历时才执行查询,显著提高了性能。 例如,以下是一个...
### C# 中使用 MATLAB 参数传递详解 #### 一、引言 在跨语言编程中,尤其是在需要高性能计算或科学计算的场景下,MATLAB 与 C# 的结合使用变得日益重要。C# 是一种现代、面向对象的编程语言,而 MATLAB 则以其强大...
### List常用方法详解 在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能...
最后,使用 MemoryStream 对象的 ToArray 方法将 XML 数据转换为 byte 数组,然后使用 Encoding.UTF8.GetString 方法将其转换为 UTF-8 编码的字符串。 在上面的代码中,首先创建了一个 MemoryStream 对象,然后创建...