属性の数が実行時に決定される一連の属性を持つデータを処理する必要があります。たとえば、データセットには動物が含まれ、属性には性別、種、年齢などが含まれる場合があり、各属性は整数 (または列挙型) で表すことができます。たとえば、男性の総数や犬の数などをすばやく計算できるように、任意の次元に沿って反復できるようにしたいと考えています。
私は次のような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に似ていますが、これらは任意の軸を反復するのではなく、空間的な関係に重点を置いているようです。
私が考えることができる唯一の構造は、データを線形配列に格納し、ポインター演算を実行してオフセットを計算するクラスです。
より良い解決策はありますか?配列がまばらになる(または次元が大きくなる)につれて、私のアプローチは効率が低下すると思います。