我需要处理具有一组属性的数据,其中属性的数量将在运行时确定。例如,数据集可能包含动物,属性可能包括性别,物种,年龄等,其中每个属性可以用整数(或枚举)表示。我希望能够沿着任何维度进行迭代,这样我可以说,快速计算出男性的总数,或狗的数量等多维数组的数据结构,其中维数在运行时确定
我这样想了Java接口:
public interface DynamicMultidimensionalStore<T>
{
Object getPoint(List<Integer> coordinates);
void setPoint(List<Integer> coordinates, T item);
Iterator<T> iterate(int dimension, List<Integer> remainingCoordinates);
DynamicMultidimensionalStore<T> getSlice(int dimension, int offset);
}
首先,必须有一个名称,立方体?我发现它与http://en.wikipedia.org/wiki/Spatial_index#Spatial_index类似,但是这些看起来更关注于空间关系而不是遍历任意轴。
我能想到的唯一结构是将数据存储在线性数组中并执行指针运算来计算偏移量的类。
有更好的解决方案吗?我认为随着数组变得更稀疏(或随着维数的增加),我的方法效率会降低。
这就是我的想法。谢谢回复。我很惊讶这个话题没有得到更多的关注。看起来这肯定是一个常见问题,但我无法找到任何解决方案。 – 2012-08-27 20:30:06