如何找出数组在初始化时必须多长时间?
How to find out how long an array has to be when being initialized?
假设我有一个字节数组 id。
以后我想这样存储数据:
ids[cz << 24 | cx << 16 | y << 8 | z << 4 | x]
在这种情况下,cz、cx、y、y、z、x 是 int 值。
那么创建数组时需要多长时间?
我以为我必须这样初始化数组:
byte[] ids = new byte[maxCz * maxCx * maxY * maxZ * maxX];
但它总是给我一个 ArrayIndexOutOfBoundsException。
OR 表达式中最大的组件是 cz << 24
。假设maxCz
为2k-1,其余max
值的选择方式是不同分量的位不重叠,则需要分配
byte[] ids = new byte[(maxCz+1) << 24];
当 maxCz
为 7 时,这是一个 128 MB 的分配,因此数组将非常大。
假设我有一个字节数组 id。
以后我想这样存储数据:
ids[cz << 24 | cx << 16 | y << 8 | z << 4 | x]
在这种情况下,cz、cx、y、y、z、x 是 int 值。
那么创建数组时需要多长时间? 我以为我必须这样初始化数组:
byte[] ids = new byte[maxCz * maxCx * maxY * maxZ * maxX];
但它总是给我一个 ArrayIndexOutOfBoundsException。
OR 表达式中最大的组件是 cz << 24
。假设maxCz
为2k-1,其余max
值的选择方式是不同分量的位不重叠,则需要分配
byte[] ids = new byte[(maxCz+1) << 24];
当 maxCz
为 7 时,这是一个 128 MB 的分配,因此数组将非常大。