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()]);
分享到:
相关推荐
本文将详细阐述Stack<T>类的特性和常用方法,帮助开发者更好地理解和运用这个高效的数据结构。 Stack<T> 类是泛型类,类型参数T定义了堆栈中存储元素的类型。它提供了丰富的构造函数和方法,以满足不同需求。以下是...
当你有一个已填充数据的List<T>对象,想要将其转换为数组时,可以使用`ToArray()`方法。例如,如果你有一个List<string>,你可以这样转换: ```csharp List<string> listS = new List<string>(); listS.Add("str");...
本篇文章将深入探讨数组和List<T>之间的转换,以及它们在实际编程中的使用方法。 首先,数组是C#中预定义的一种数据类型,它提供了一种存储固定数量同类型元素的方式。数组分为一维数组、二维数组等,每种都有其...
最后,使用`ToArray`方法将`List<T>`转换为数组并返回。 这个方法虽然简单,但在处理特定情况时可能不够通用。例如,它只查找与`inputValue`完全相等的元素,而无法处理根据自定义比较器查找重复元素的情况。为了...
`List<T>`类提供了一系列方法来处理列表中的元素: - `Add(T item)`: 在列表末尾添加一个元素。 - `AddRange(IEnumerable<T> collection)`: 添加集合中的所有元素到列表末尾。 - `Insert(int index, T item)`: ...
<br> var Temp = new VBArray(myVBArray)<br> var myJSArray<br> myJSArray = Temp.toArray()<br> 上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript 数<br>组。...
在C#编程中,List<T>是.NET框架中常用的一个泛型集合,它提供了许多方便的方法来处理数组或集合中的对象。本压缩包文件“C#源代码-List泛型集合的三个练习”包含了三个练习,旨在帮助学习者深入理解和应用List<T>类...
* `toArray(IntFunction<A[]> generator)`: 收集流中的元素,转换为数组。 Optional类 Optional 类是一个包装器对象,内置了值,将值进行封装,可以有效避免判断对象是否为 null 的操作或出现空指针的异常。 常用...
- `ToArray()`:将`List<T>`转换为数组。 除了这些基本操作,`List<T>`还支持迭代,可以使用`foreach`循环遍历集合: ```csharp foreach (int number in numbers) { Console.WriteLine(number); } ``` 在实际...
它包含两个方法:`MyClassListToJson<T>`用于将List<T>转换为Json字符串,`MyJsonToClassList<T>`则将Json字符串转换回List<T>: ```csharp public class ClassListTransString { public string MyClassListToJson...
除了基本的添加、删除和访问元素,`List<T>`还提供了一些额外的有用方法,如`Clear`清空列表,`Count`获取元素数量,`Sort`对列表进行排序,`BinarySearch`进行二分查找,`Contains`检查元素是否存在,以及`ToArray`...
此外,Rx还支持将IObservable<T>转换为其他形式,例如ToEnumerable、ToArray和ToList等。 Rx编程模式鼓励使用声明式编程范式,并依赖于对数据流进行操作的函数。它允许开发者更加灵活地处理异步事件和数据流,使...
public static string JsonSerializer<T>(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string json...
其中,`ToArray()` 方法经常被用来将`List<T>`转换为数组(`T[]`)。然而,根据标题和描述中的效率测试,我们发现`List<T>.ToArray()` 并非像我们通常所假设的那样只是一个简单的引用复制,而是实际执行了数组的深...
- **IQueryable<T>**:这是一个特殊的接口,它不仅实现了 `IEnumerable<T>` 接口,还实现了 `IQueryable` 和 `IEnumerable` 接口。`IQueryable<T>` 主要用于支持延迟执行(Lazy Evaluation)和服务器端过滤(Server-...
LINQ提供了一种简单的方法将`IEnumerable<T>`转换为`IEnumerable<U>`,例如: ```csharp IEnumerable<string> strEnumerable = …; IEnumerable<object> objEnumerable = strEnumerable.Cast<object>(); ``` ...
解释 C#中 `List<T>.Sort()`方法和 `Array.Sort()`方法的不同之处。 在C#中,`List<T>` 和 `Array` 都提供了排序方法,但它们之间存在一些差异: - **类型区别**:`List<T>.Sort()` 是针对泛型列表的操作,而 `...
本章节重点介绍了 Java 8 中 Stream 流的基本概念、特点以及与集合类之间的差异,并深入探讨了函数式接口(特别是 `Predicate<T>`)的使用方法。通过具体示例,我们还学习了如何获取 Stream 流、执行常见操作以及...
例如,你可以定义一个泛型`max<T>(const T& a, const T& b)`函数,返回两个参数中较大的那个。函数模板的使用方式与普通函数相同,但在调用时会根据实际参数类型自动推导模板实例。 五、泛型与STL C++标准库(STL...