`
fujinbing
  • 浏览: 237254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于<T> T[] toArray(T[] a) 方法

    博客分类:
  • java
JDK 
阅读更多
  public <T> T[] toArray(T[] a) {
        if (a.length < size)
            a = (T[])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;
    }

上面代码是jdk ArrayList中的源码

1.该方法用了泛型,并且是用在方法的创建中(<T> 相当于定义泛型,T[]是在使用泛型T)
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法
2.该方法返回集合中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

3.与 public Object[] toArray() 的比较
public Object[] toArray() {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);
return result;
    }

从源码中可以看出它仅能返回 Object[]类型的,相当于toArray(new Object[0]) 注意:数组不能强制转换

4.使用

1).参数指定空数组,节省空间
String[] y = x.toArray(new String[0]);
2).指定大数组参数浪费时间,采用反射机制
String[] y = x.toArray(new String[100]);  //假设数组size大于100
3).姑且认为最好的
String[] y = x.toArray(new String[x.size()]);
分享到:
评论

相关推荐

    CSharp 4.0 .Net Framework V4.0 Stack-T类

    本文将详细阐述Stack&lt;T&gt;类的特性和常用方法,帮助开发者更好地理解和运用这个高效的数据结构。 Stack&lt;T&gt; 类是泛型类,类型参数T定义了堆栈中存储元素的类型。它提供了丰富的构造函数和方法,以满足不同需求。以下是...

    C#中List和数组之间转换的方法

    当你有一个已填充数据的List&lt;T&gt;对象,想要将其转换为数组时,可以使用`ToArray()`方法。例如,如果你有一个List&lt;string&gt;,你可以这样转换: ```csharp List&lt;string&gt; listS = new List&lt;string&gt;(); listS.Add("str");...

    c#之数组和list转换

    本篇文章将深入探讨数组和List&lt;T&gt;之间的转换,以及它们在实际编程中的使用方法。 首先,数组是C#中预定义的一种数据类型,它提供了一种存储固定数量同类型元素的方式。数组分为一维数组、二维数组等,每种都有其...

    C#查找列表中所有重复出现元素的方法

    最后,使用`ToArray`方法将`List&lt;T&gt;`转换为数组并返回。 这个方法虽然简单,但在处理特定情况时可能不够通用。例如,它只查找与`inputValue`完全相等的元素,而无法处理根据自定义比较器查找重复元素的情况。为了...

    List-CSharp.zip_C# list 顺序_Linked list_c# list声明_c#list类函数_c#lis

    `List&lt;T&gt;`类提供了一系列方法来处理列表中的元素: - `Add(T item)`: 在列表末尾添加一个元素。 - `AddRange(IEnumerable&lt;T&gt; collection)`: 添加集合中的所有元素到列表末尾。 - `Insert(int index, T item)`: ...

    asp 完全教程

    &lt;br&gt; var Temp = new VBArray(myVBArray)&lt;br&gt; var myJSArray&lt;br&gt; myJSArray = Temp.toArray()&lt;br&gt; 上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript 数&lt;br&gt;组。...

    C#源代码-List泛型集合的三个练习.zip

    在C#编程中,List&lt;T&gt;是.NET框架中常用的一个泛型集合,它提供了许多方便的方法来处理数组或集合中的对象。本压缩包文件“C#源代码-List泛型集合的三个练习”包含了三个练习,旨在帮助学习者深入理解和应用List&lt;T&gt;类...

    【Java基础笔记】Java集合流Stream.docx

    * `toArray(IntFunction&lt;A[]&gt; generator)`: 收集流中的元素,转换为数组。 Optional类 Optional 类是一个包装器对象,内置了值,将值进行封装,可以有效避免判断对象是否为 null 的操作或出现空指针的异常。 常用...

    C#List泛型集合实例,源码

    - `ToArray()`:将`List&lt;T&gt;`转换为数组。 除了这些基本操作,`List&lt;T&gt;`还支持迭代,可以使用`foreach`循环遍历集合: ```csharp foreach (int number in numbers) { Console.WriteLine(number); } ``` 在实际...

    类的List与Json的互转.docx

    它包含两个方法:`MyClassListToJson&lt;T&gt;`用于将List&lt;T&gt;转换为Json字符串,`MyJsonToClassList&lt;T&gt;`则将Json字符串转换回List&lt;T&gt;: ```csharp public class ClassListTransString { public string MyClassListToJson...

    c#可变数组 快来下

    除了基本的添加、删除和访问元素,`List&lt;T&gt;`还提供了一些额外的有用方法,如`Clear`清空列表,`Count`获取元素数量,`Sort`对列表进行排序,`BinarySearch`进行二分查找,`Contains`检查元素是否存在,以及`ToArray`...

    introduction to Rx

    此外,Rx还支持将IObservable&lt;T&gt;转换为其他形式,例如ToEnumerable、ToArray和ToList等。 Rx编程模式鼓励使用声明式编程范式,并依赖于对数据流进行操作的函数。它允许开发者更加灵活地处理异步事件和数据流,使...

    Jayrock(json字符串解析)

    public static string JsonSerializer&lt;T&gt;(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string json...

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

    其中,`ToArray()` 方法经常被用来将`List&lt;T&gt;`转换为数组(`T[]`)。然而,根据标题和描述中的效率测试,我们发现`List&lt;T&gt;.ToArray()` 并非像我们通常所假设的那样只是一个简单的引用复制,而是实际执行了数组的深...

    C# 中的 LINQ 入门

    - **IQueryable&lt;T&gt;**:这是一个特殊的接口,它不仅实现了 `IEnumerable&lt;T&gt;` 接口,还实现了 `IQueryable` 和 `IEnumerable` 接口。`IQueryable&lt;T&gt;` 主要用于支持延迟执行(Lazy Evaluation)和服务器端过滤(Server-...

    使用LINQ来简化编程的7个技巧

    LINQ提供了一种简单的方法将`IEnumerable&lt;T&gt;`转换为`IEnumerable&lt;U&gt;`,例如: ```csharp IEnumerable&lt;string&gt; strEnumerable = …; IEnumerable&lt;object&gt; objEnumerable = strEnumerable.Cast&lt;object&gt;(); ``` ...

    2024年 C# sort面试题目

    解释 C#中 `List&lt;T&gt;.Sort()`方法和 `Array.Sort()`方法的不同之处。 在C#中,`List&lt;T&gt;` 和 `Array` 都提供了排序方法,但它们之间存在一些差异: - **类型区别**:`List&lt;T&gt;.Sort()` 是针对泛型列表的操作,而 `...

    day13【Stream流】.md

    本章节重点介绍了 Java 8 中 Stream 流的基本概念、特点以及与集合类之间的差异,并深入探讨了函数式接口(特别是 `Predicate&lt;T&gt;`)的使用方法。通过具体示例,我们还学习了如何获取 Stream 流、执行常见操作以及...

    C++泛型用法_.docx

    例如,你可以定义一个泛型`max&lt;T&gt;(const T& a, const T& b)`函数,返回两个参数中较大的那个。函数模板的使用方式与普通函数相同,但在调用时会根据实际参数类型自动推导模板实例。 五、泛型与STL C++标准库(STL...

Global site tag (gtag.js) - Google Analytics