我正在考虑创建一个列表列表,但这是否真的是在Java中执行此操作的最佳方式?这会为巨大的3D阵列带来大量内存开销吗?
答案 0 :(得分:4)
这里最好的结构在很大程度上取决于它的使用方式。
首先,如果数组的维度反映了不同的类型(例如,人口统计数据的数组,包括年龄,收入和地区作为维度),那么将每个数据封装为enum
是一个好主意。或class
而不是仅仅为了在数组中建立索引而尝试在int
中进行编码。像EnumMap这样的东西在存储和访问方面非常有效。
如果它是一个稀疏数组(即将有许多空值或空值),那么您的最佳结构可能是从坐标到值的Map。在这种情况下,维度的大小是无关紧要的:值的数量是唯一重要的事情。
另一方面,如果数组具有固定大小且所有单元格都具有值,那么传统的[] [] []数组可能是您最有效的机制。
然而,最终您的设计应该自然地反映您的问题领域:尝试在早期优化速度或内存通常是错误的。当你知道它们确实存在问题时,请稍后解决这些问题。当您解决这些问题时,请确保优化的实现细节隐藏在定义良好的界面后面。