【发布时间】:2013-12-14 11:53:53
【问题描述】:
我正在使用坐标系 x(宽度)、y(高度)、z(深度)
只是为了消除混淆,如果有任何 x 和 y 是平面,我使用 Z 作为高程。
我将每秒访问数组数百万次,基准测试表明使用索引的一维数组更快,我希望尽可能提高效率,以便其他事物可以使用该时间
例如一个二维数组 --> 一维数组的创建只是
Object[] oneDArray = new Object[width * height]
要索引数组,我可以使用以下内容。
Object obj = oneDArray[x + y * width]
我确实在 stackoverflow 上找到了以下内容,但我不完全确定哪一个是正确的 How to "flatten" or "index" 3D-array in 1D array?
“正确”的答案说要索引数组,请执行以下操作
Object[] oneDArray = new Object[width * height * depth]
Object obj = oneDArray[x + WIDTH * (y + DEPTH * z)]
但是另一个答案说“正确”的答案是错误的并使用以下
Object[] oneDArray = new Object[width * height * depth]
Object obj = oneDArray[x + HEIGHT* (y + WIDTH* z)]
读取扁平 3D 数组的正确方法是什么?
【问题讨论】:
-
对于您当前对宽度、高度和深度的定义,这两种变体都不正确。
-
您的分析是否表明这将是主要瓶颈?因为否则你会因为一点点收获而让自己头疼
标签: java arrays multidimensional-array 3d flatten