1

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

4

4 回答 4

11

可以使用Array.newInstance,但是:

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

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

于 2012-07-04T14:43:59.577 回答
4

简单的答案是输入很多[]'s。(但实际限制是 255。这是由 JVM 规范(在第4.3.2 节中)而不是 JLS 强加的;请参阅Java 数组中的最大维数

但你真的不想这样做:

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

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

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

于 2012-07-04T14:44:12.697 回答
2

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

于 2012-07-04T15:10:30.730 回答
1

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

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

于 2012-07-04T14:47:13.317 回答