2011-04-21 44 views
1

我有一个ArrayList与ObjectArrays这样的:如何创建对象[] []从ArrayList中<Object[]>在java中

ArrayList<Object[]> objectList = new ArrayList<Object[]>(); 

我想将其转换为:

Object[][] objectListAsArray = ... 

我首先想到的是要将objectArrays列表转换为数组:

objectList.toArray() 

...但这会o只返回一个Object[]。有人可以帮我找到解决方案吗?

问候 嗯...

+0

我可以问为什么你需要一个对象数组的数组?这是我从来没有见过的奇怪的事情。出于数学原因,我只看到了基元等多维数组。用这种方法使用对象最好是奇怪的。也许有更好的解决方案来解决更大的问题 – 2011-04-21 15:11:43

+0

嗨Java Drinker,对于迟到的答案感到抱歉。我需要[TestNGs](http://testng.org/doc/documentation-main.html#parameters-dataproviders)数据提供者的多维对象数组。 – 2011-04-26 06:10:25

回答

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

正如彼得指出,您的Object[]将列表和阵列之间共享。如果你想要不同的数组,你必须迭代列表并复制数组。

+3

是的,这是一个。你甚至可以删除'maxArraySize':'list.toArray(new Object [list.size()] [])' – 2011-04-21 14:05:50

+0

是的,好点。 – Bozho 2011-04-21 14:07:18

+0

toArray()执行ArrayList的浅表副本。 – 2011-04-21 14:18:57

3

只是尝试:

Object[][] objectListAsArray = objectList.toArray(new Object[0][]); 
+1

不,不会... – Bozho 2011-04-21 14:05:47

+0

不,您必须为二维数组中的“行”提供大小。这不会编译(为什么upvotes ?!)。 – 2011-04-21 14:06:41

+0

@jfpoilpret - 不编译 - 好主意,但小错误(不幸) – 2011-04-21 14:09:59

相关问题