`
jianqicui
  • 浏览: 10959 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

toArray用法

 
阅读更多

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);
 
分享到:
评论

相关推荐

    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(); ``...

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

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

    解决Laravel5.5下的toArray问题

    为了尽量保持对原有框架影响最小,作者并没有直接修改`toArray`方法,而是新增了一个方法`getList`来替代`toArray`。在`vendor/laravel/framework/src/Illuminate/Support/Collection.php`文件中的`toArray`方法下,...

    jQuery学习笔记之toArray()

    在jQuery的学习过程中,`toArray()`是一个非常实用的方法,它能够将jQuery对象转换为普通的JavaScript数组,方便我们进行进一步的数组操作。 `jQuery.toArray()`的核心作用在于,当你有一个jQuery对象,它可能包含...

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

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

    excelToArray

    4. **读取数据**:使用`getActiveSheet`的`getCellCollection`方法获取所有单元格,然后遍历它们以构建二维数组。例如: ```php $data = array(); foreach ($objPHPExcel-&gt;getActiveSheet()-&gt;getCellCollection()...

    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]);...

    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 AbstractCollection类的使用方法.pdf

    - `toArray()`方法返回的数组是安全的,因为集合并不维护对返回数组的引用,允许调用者自由修改返回的数组。 5. **子类扩展**: - 要创建一个不可修改的集合,程序员只需要扩展`AbstractCollection`并提供`...

    arraylist用法

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

    vb.NET中split使用方法宝典

    Return regex.Matches(input).Cast(Of Match).Select(Function(m) m.Value).ToArray() End Function ``` 在这个例子中,我们定义了一个名为`SplitWords`的函数,使用正则表达式`\b\w+\b`来匹配所有单词,从而实现了...

    C# 中使用matlab参数传递

    本文将详细介绍如何在 C# 中有效地使用 MATLAB 进行参数传递,并通过实例展示具体的实现方法。 #### 二、MATLAB 与 C# 集成基础 为了使 C# 和 MATLAB 能够协同工作,我们需要了解 MATLAB 提供的一个名为 MATLAB ...

    json-to-array:将对象转换为数组

    json到数组 将对象转换为数组例子var ... // [[name, 'luckydrq'], [age, 30]]现实世界中的用法您可以将object更改为ES6 Map : var obj = { a : 1 } ;var es6Map = new Map ( toArray ( obj ) ) ;存在麻省理工学院

    JAVA中的Iterator的用法

    本文将深入探讨`Iterator`的基本概念、使用方法以及其实现原理,帮助读者更好地理解和使用这一强大的工具。 #### 二、`Iterator`接口介绍 `Iterator`接口位于`java.util`包中,是集合框架的一部分。它定义了三个...

    C#ArrayList用法

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

    Java中ArrayList类的用法.docx

    ### Java中ArrayList类的用法详解 #### 一、ArrayList的概念 `ArrayList`是Java集合...通过本文介绍的基本使用方法以及关键属性和方法,您可以更好地理解和使用`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....

    .Net V4.0 Array 类

    例如,我们可以使用`BinarySearch`方法快速查找数组中的特定元素,使用`Copy`方法复制数组部分或全部内容,使用`AsReadOnly`创建只读数组以保护数据不被意外修改。 总之,`.Net Framework V4.0`中的`System.Array`...

    C#将jpg格式图像转换为数据流,数据流恢复jpg格式图像并显示

    接下来,我们可以使用`System.Drawing`命名空间的`Image.FromStream`方法来创建图像对象,最后使用`PictureBox`控件显示图像。下面是一段示例代码: ```csharp using System.Drawing; using System.Windows....

Global site tag (gtag.js) - Google Analytics