我需要處理具有一組屬性的數據,其中屬性的數量將在運行時確定。例如,數據集可能包含動物,屬性可能包括性別,物種,年齡等,其中每個屬性可以用整數(或枚舉)表示。我希望能夠沿着任何維度進行迭代,這樣我可以說,快速計算出男性的總數,或狗的數量等多維數組的數據結構,其中維數在運行時確定
我這樣想了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