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

时间:2015-01-29 10:38:58

标签: java collections

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

1 个答案:

答案 0 :(得分:4)

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

首先,如果数组的维度反映了不同的类型(例如,人口统计数据的数组,包括年龄,收入和地区作为维度),那么将每个数据封装为enum是一个好主意。或class而不是仅仅为了在数组中建立索引而尝试在int中进行编码。像EnumMap这样的东西在存储和访问方面非常有效。

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

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

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