使用列表数据填充数组

时间:2010-03-29 14:37:44

标签: java arrays list collections

如何使用一个List提供的数据填充数组?

例如,我有一个带字符串的列表:

List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");

然后我想将这些数据复制到一个String数组中:

String[] array = ?

5 个答案:

答案 0 :(得分:9)

列表中有toArray()方法...
您必须首先分配一个适当大小的数组(通常是list.size()),然后将其作为参数传递给toArray方法。该数组将使用列表内容进行初始化。

例如:

String[] myArray = new String[myList.size]();
myList.toArray(myArray);

您也可以在toArray

的括号内进行新的调用

答案 1 :(得分:7)

首先,您必须指定List - List<String>的具体类型(不要遗漏)。

然后,你可以做

String[] array = list.toArray(new String[list.size()]);

答案 2 :(得分:3)

您可以使用toArray(T[] a)方法:

String[] arr = list.toArray(new String[0]);

或者替代:

String[] arr = list.toArray(new String[list.size()]);

两者之间的区别在于后者可能不需要分配新数组。


Effective Java 2nd Edition :第23项:不要在新代码中使用原始类型。

JLS 4.8 Raw Types

  

原始类型的使用仅允许作为遗留代码兼容性的让步。强烈建议不要在将通用性引入Java编程语言之后编写的代码中使用原始类型。 未来版本的Java编程语言可能会禁止使用原始类型。


不要养成命名标识符l的习惯。它看起来很像1

答案 3 :(得分:2)

语法有点傻瓜;你必须提供你自己创建的数组作为输入。

String[] array = l.toArray(new String[l.size()]);

答案 4 :(得分:1)

String[] array = new String[l.size()];
l.toArray(array);