Java中toArray有两个方法。
public Object[] toArray()
public <T> T[] toArray(T[] a)
两个问题:
1. 有什么区别?
2. 怎么使用?
区别是前者会产生ClassCastException,后者不会。为什么呢?
来看一下源代码。
public Object[] toArray() {
return Arrays.copyOf(elementData, size);
}
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
一看代码很明白了,后者在产生结果前,先复制了一个执行类型的数组。
最后介绍下使用方法。
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);
分享到:
相关推荐
`toArray()`方法的基本用法如下: ```java List<String> list = new ArrayList(); list.add("A"); list.add("B"); list.add("C"); // 调用toArray()方法,返回一个Object数组 Object[] array = list.toArray(); ``...
尽管`List<T>` 在内部确实使用了一个数组(`_items`)来存储元素,但`ToArray()` 方法并不像我们可能想象的那样简单地返回该数组的引用。实际上,当调用`ToArray()` 时,它会创建一个新的数组,并将`List<T>` 中的...
为了尽量保持对原有框架影响最小,作者并没有直接修改`toArray`方法,而是新增了一个方法`getList`来替代`toArray`。在`vendor/laravel/framework/src/Illuminate/Support/Collection.php`文件中的`toArray`方法下,...
在jQuery的学习过程中,`toArray()`是一个非常实用的方法,它能够将jQuery对象转换为普通的JavaScript数组,方便我们进行进一步的数组操作。 `jQuery.toArray()`的核心作用在于,当你有一个jQuery对象,它可能包含...
Java ArrayList 类中的 `toArray(T[])` 方法的参数类型使用 `T` 而不是 `E`,这在初看之下似乎违背了泛型的主要目的——提供类型安全。然而,这样的设计实则是为了增加代码的灵活性和实用性。让我们深入探讨一下其中...
4. **读取数据**:使用`getActiveSheet`的`getCellCollection`方法获取所有单元格,然后遍历它们以构建二维数组。例如: ```php $data = array(); foreach ($objPHPExcel->getActiveSheet()->getCellCollection()...
同时,你可以通过`Add`方法连续添加元素,或者通过`ToArray`方法将ArrayList转换为特定类型的数组: ```java for (int i = 0; i ; i++) list.add(i + 20); Int32[] values = (Int32[])list.toArray(new Int32[0]);...
1. 使用`toArray()`方法,它可以接受一个类型参数来决定返回数组的类型。 ```java ArrayList<Integer> list = new ArrayList(); list.add(1); list.add(2); Integer[] array = list.toArray(new Integer[0]); ...
- `toArray()`方法返回的数组是安全的,因为集合并不维护对返回数组的引用,允许调用者自由修改返回的数组。 5. **子类扩展**: - 要创建一个不可修改的集合,程序员只需要扩展`AbstractCollection`并提供`...
`ToArray`方法可以将`ArrayList`转换为数组。需要注意的是,转换时必须指定目标数组的类型,否则会导致类型不匹配的异常。例如: ```csharp ArrayList list = new ArrayList(); list.Add(1); list.Add(2); ...
Return regex.Matches(input).Cast(Of Match).Select(Function(m) m.Value).ToArray() End Function ``` 在这个例子中,我们定义了一个名为`SplitWords`的函数,使用正则表达式`\b\w+\b`来匹配所有单词,从而实现了...
本文将详细介绍如何在 C# 中有效地使用 MATLAB 进行参数传递,并通过实例展示具体的实现方法。 #### 二、MATLAB 与 C# 集成基础 为了使 C# 和 MATLAB 能够协同工作,我们需要了解 MATLAB 提供的一个名为 MATLAB ...
json到数组 将对象转换为数组例子var ... // [[name, 'luckydrq'], [age, 30]]现实世界中的用法您可以将object更改为ES6 Map : var obj = { a : 1 } ;var es6Map = new Map ( toArray ( obj ) ) ;存在麻省理工学院
本文将深入探讨`Iterator`的基本概念、使用方法以及其实现原理,帮助读者更好地理解和使用这一强大的工具。 #### 二、`Iterator`接口介绍 `Iterator`接口位于`java.util`包中,是集合框架的一部分。它定义了三个...
需要注意的是,尽管使用此方法创建的`ArrayList`是线程安全的,但在进行枚举时仍然需要显式锁定`SyncRoot`属性以避免异常。 ##### 3. Count 和 Capacity 属性 - **Count**: 表示当前`ArrayList`中元素的数量,只读...
### Java中ArrayList类的用法详解 #### 一、ArrayList的概念 `ArrayList`是Java集合...通过本文介绍的基本使用方法以及关键属性和方法,您可以更好地理解和使用`ArrayList`,以解决实际编程中的数据存储和管理问题。
**方法一:使用toArray()方法** ```java List<String> list = new ArrayList(); list.add("a1"); list.add("a2"); // 使用toArray()方法,传入一个大小等于list.size()的String数组 String[] toBeStored = list....
例如,我们可以使用`BinarySearch`方法快速查找数组中的特定元素,使用`Copy`方法复制数组部分或全部内容,使用`AsReadOnly`创建只读数组以保护数据不被意外修改。 总之,`.Net Framework V4.0`中的`System.Array`...
接下来,我们可以使用`System.Drawing`命名空间的`Image.FromStream`方法来创建图像对象,最后使用`PictureBox`控件显示图像。下面是一段示例代码: ```csharp using System.Drawing; using System.Windows....