【问题标题】:How to create 400 dimensional array in java如何在java中创建4​​00维数组
【发布时间】:2012-07-04 14:35:55
【问题描述】:

我们可以轻松创建 2,3,4 维数组..但我想知道如何创建非常大的维数组

【问题讨论】:

  • 创建 2、3 或 4 维数组的方法相同。只是……可读性差很多。 (我不禁想知道您所代表的数据是否更适合一个类或一组类。)
  • 同意。我想不出一种可读的方式来遍历 400 维数组。
  • 继续输入....只是更多的方括号。对我来说听起来很荒谬。
  • 幽默一下——你到底为什么需要这样的东西?不能自己上课吗?我真的很高兴看到你迭代第 300 个。 :D
  • 现实检查:每个长度为 2 的 400 维数组需要 10^122 字节的内存,任何 64 位机器甚至 128 位或 256 位机器都不支持地址空间位。

标签: java multidimensional-array


【解决方案1】:

可以使用Array.newInstance,但是:

新数组的维数不得超过实现支持的数组维数(通常为 255)。

但我相信为您的域创建更好的抽象对您来说会更好。处理这样的数组会很困难。也许您可以提供更多关于您想要达到的目标的信息,以便提供更好的答案。

【讨论】:

  • Java 中的维度不能超过 255 个,您也不想这样做。
【解决方案2】:

简单的答案是输入大量[]。 (但实际限制为 255。这是由 JVM 规范(在第 4.3.2 节中)而不是 JLS 强加的;请参阅 Maximum number of dimensions in a Java array

但你真的不想这样做:

  • 您的代码将难以阅读和维护。每次您需要获取一个元素时,您必须提供 400 个索引表达式。

  • 以这种方式表示的 400 维数组将占用大量内存...

如果您对此很认真,则应该研究某种稀疏表示。但即便如此,传统的数组计算也很难实用。

【讨论】:

    【解决方案3】:

    您可以做的是使用 BigInteger 将 400 维编码为整数,并将其用作 HashMap 或 TreeMap 的键。您的数组需要非常、非常、非常稀疏,否则您将很快达到内存限制。甚至400个尺寸为2的维度是2.6e120

    【讨论】:

      【解决方案4】:

      从长远来看,创建一个 400 维数组会更难维护/读取,而且还会为您浪费大量内存。我建议您创建一个类来存储您的数据并开始将此类的对象添加到 java.util.List interface. 的任何实现中

      这样,您也可以以更易读的格式存储数据。

      【讨论】:

        猜你喜欢
        • 2014-02-26
        • 2012-04-05
        • 2013-11-22
        • 1970-01-01
        • 2011-02-12
        • 2016-12-18
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        相关资源
        最近更新 更多