如何用一个List提供的数据填充数组?用List数据填充数组
例如,我有一个字符串列表:
List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
话,我想这个数据复制到一个String数组:
String[] array = ?
如何用一个List提供的数据填充数组?用List数据填充数组
例如,我有一个字符串列表:
List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");
话,我想这个数据复制到一个String数组:
String[] array = ?
有一个在列表中的toArray()方法...
您必须先分配一个适当大小的数组(通常为list.size()),然后将其作为参数传递给toArray方法。该数组将使用列表内容进行初始化。
例如:
String[] myArray = new String[myList.size]();
myList.toArray(myArray);
你也可以做指定者
的括号内的新呼叫首先,你必须指定具体类型的List
- List<String>
(不要将其生的)。
然后,你可以做
String[] array = list.toArray(new String[list.size()]);
String[] array = new String[l.size()];
l.toArray(array);
语法是有点愚蠢的;你必须提供你自己创建的数组作为输入。
String[] array = l.toArray(new String[l.size()]);
可以使用toArray(T[] a)
方法:
String[] arr = list.toArray(new String[0]);
或者交替:
String[] arr = list.toArray(new String[list.size()]);
这两者之间的区别是,后者可能不需要分配一个新的数组。
有效的Java第二版:第23项:不要在新代码中使用原始类型。
使用原始类型被允许仅作为让步的遗留代码兼容。强烈建议在将通用性引入到Java编程语言后编写的代码中使用原始类型。 未来版本的Java编程语言可能会禁止使用原始类型。
不要命名的标识符l
的习惯。它看起来非常像1
。
为了安全,它应该是'myArray = myList.toArray(myArray);' – Hardcoded 2010-03-29 15:17:53
@Hardcoded:我一直在想那个。为什么这里还有返回类型?我总是讨厌改变他们的输入并返回它的方法,除非你链接它们。 – Uri 2010-03-29 15:38:05
该方法首先检查给定的数组是否足够大。如果不是,则会创建一个新的。数组参数的唯一原因是,在运行时没有关于数组类型的信息。它本来也可以是一个Class对象。 – Hardcoded 2010-03-29 15:43:38