【问题标题】:How to create Object[][] from ArrayList<Object[]> in java如何在 java 中从 ArrayList<Object[]> 创建 Object[][]
【发布时间】:2011-04-21 13:58:01
【问题描述】:

我有一个 ArrayList 和这样的 ObjectArrays:

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

我想把它转换成:

Object[][] objectListAsArray = ...

我的第一个想法是将带有 objectArrays 的列表转换为数组:

objectList.toArray()

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

问候 嗯……

【问题讨论】:

  • 我能问一下为什么你需要一个对象数组吗?这是一个奇怪的东西,我没有看到经常使用。出于数学原因,我只看到原始等的多维数组。以这种方式使用对象充其量是奇怪的。也许对于更大的问题有更好的解决方案
  • 嗨 Java 饮酒者,很抱歉延迟回答。我需要TestNGs 数据提供者的多维对象数组。

标签: java arrays collections


【解决方案1】:
Object[][] array = list.toArray(new Object[list.size()][]);

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

【讨论】:

  • 是的,就是这个。你甚至可以删除maxArraySize:list.toArray(new Object[list.size()][])
  • toArray() 对 ArrayList 进行浅拷贝。
  • @Bozho,这意味着Object[] 保持不变。
  • @Bozho,但它确实使创建 [maxArraySize] 变得多余。它可能使代码看起来在做一些它没有做的事情。
【解决方案2】:

试试吧:

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

【讨论】:

  • 不,您必须为二维数组中的“行”提供一个大小。这不会编译(为什么要投票?!)。
  • @jfpoilpret - 无法编译 - 好主意但小错误(不幸的是)
  • 糟糕,抱歉将 0 放在错误的索引中,我几乎从不使用数组数组(无论如何我认为这是一个好习惯)。
  • @jfpoilpret -(那么您应该编辑并更正您的答案;))
  • @Bart Kiers 可能是因为最初的答案是朝着正确方向迈出的一大步,但不一定是正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2014-10-03
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多