如何在Java中优雅地将一个三维数组表示为一个集合?

How to elegantly represent a three dimensional array as a collection in Java?

我正在考虑创建一个列表的列表列表,但这真的是在 Java 中执行此操作的最佳方式吗?这会为巨大的 3D 阵列产生大量内存开销吗?

这里最好的结构在很大程度上取决于它可能的使用方式。

首先,如果数组的维度反映了不同的类型(例如,以年龄、收入和地区为维度的人口统计数据数组),那么最好将这些数据封装为 enumclass 而不是为了在数组中建立索引而尝试在 int 中进行编码。 EnumMap 之类的东西在存储和访问方面非常高效。

如果它将是一个稀疏数组(即会有许多空值或空值),那么您最好的结构可能是从坐标到值的映射。在那种情况下,维度的大小无关紧要:值的数量是唯一重要的事情。

另一方面,如果数组的大小固定且所有单元格都有一个值,那么传统的 [ ][ ][ ] 数组可能是您最有效的机制。

然而,最终您的设计应该自然地反映您的问题域:在早期尝试优化速度或内存通常是错误的。当你知道它们确实是问题时,稍后再解决这些问题。当你解决它们时,确保优化的实现细节隐藏在定义良好的接口后面。