解释下 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; }
时间: 2023-06-06 10:05:28 浏览: 44
这是一个 Java 中的数组转换方法 toArray,使用了泛型 <T>。如果传入的数组 a 的长度小于集合的 size,则会创建一个新的数组并将集合中的元素复制到新数组中返回;如果 a 的长度大于等于集合的 size,则将集合中的元素复制到 a 中返回,并将 a 中多余的位置设置为 null。
相关问题
list<string> lst =new list<string>{}; lst.toarray(); 结果?
这段代码是错误的,因为 C++ 中没有 `list` 类,而是有 `std::list` 类,同时 `std::list` 类也没有 `toarray()` 方法。如果你想将 `std::list` 转换为数组,可以使用 `std::vector` 类来实现,具体代码如下:
```c++
#include <iostream>
#include <list>
#include <vector>
int main() {
std::list<std::string> lst{"hello", "world", "!"};
std::vector<std::string> vec(lst.begin(), lst.end());
for (const auto& str : vec) {
std::cout << str << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先定义了一个 `std::list<std::string>` 类型的变量 `lst`,然后使用 `std::vector` 类的构造函数将 `lst` 转换为数组,并将结果存储在 `std::vector<std::string>` 类型的变量 `vec` 中。最后,使用 `for` 循环遍历 `vec` 中的元素,并输出到标准输出流中。
c#中 list<string> lst =new list<string>{}; lst.toarray(); 结果会怎么样
在 C# 中,List<string> 类型的 lst 可以使用 ToArray() 方法将其转换为一个 string 数组。但是,需要注意的是,调用 ToArray() 方法不会改变原始的 lst 列表,而是返回一个新的数组。因此,如果您想要在代码中使用转换后的数组,您需要将其保存到一个新的变量中,例如:
```
List<string> lst = new List<string>{ "a", "b", "c" };
string[] arr = lst.ToArray();
```
在这个例子中,lst 列表包含三个字符串元素 "a"、"b" 和 "c"。调用 lst.ToArray() 方法会返回一个包含相同元素的新的字符串数组,该数组可以赋值给 arr 变量。