我需要处理具有一组属性的数据,其中属性的数量将在运行时确定。例如,一个数据集可能包含动物,属性可能包括性别、物种、年龄等,其中每个属性都可以用整数(或枚举)表示。我希望能够沿任何维度进行迭代,这样我就可以快速计算男性的总数或狗的数量等。
我正在考虑这样的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但这些似乎更关注空间关系而不是迭代任意轴。
我能想到的唯一结构是一个将数据存储在线性数组中并执行指针运算来计算偏移量的类。
有更好的解决方案吗?我认为随着数组变得更加稀疏(或随着维度的增加),我的方法会变得不那么有效。