【发布时间】:2011-01-05 15:09:05
【问题描述】:
我想知道最简单的方法是实现一个在运行时指定排名的数组。
我正在处理的示例存储格点的布尔值数组,我希望用户能够选择模型在运行时使用多少空间维度。
我查看了 Array.newInstance() 方法:
dimensionOfSpace = userInputValue; // this value comes from GUI or whatever
int latticeLength = 5; // square lattice for simplicity
int[] dimensions = new int[dimensionOfSpace];
for(int i = 0; i < l.length; i++) l[i] = length;
Object lattice = Array.newInstance(boolean.class, dimensions);
但是以任何方式访问这些值似乎都需要非常慢的方法,例如递归地使用 Array.get 直到返回的值不再是一个数组,即使用 isArray()。
我在这里错过了一个明显的解决方案吗?我希望能够以类似于 foo[i][j][k] 的方式访问这些值。
【问题讨论】:
-
有些人会将您尝试做的事情称为“在运行时设置数组的等级”。很多人会认为您的意思是设置固定排名数组的大小。
-
@HamishGrubijan:我希望 HashMap 可以工作(使用坐标的字符串表示),但如果数据结构变大,效率会非常低。
标签: java arrays multidimensional-array