2013-02-16 62 views
2

是否有支持切片的Java數組庫?我只需要定期地從給定維度或整個維度(即不需要範圍)取得一個片段。Java切片多維數組庫

注意事項(讀答覆潛力的看法):

  • 我知道,常規的Java數組不支持它,我不願意寫我自己的切片庫。
  • 使用Collection(中other question意見建議)的轉變問題
  • 使用System.arraycopy在高維沒有幫助,因爲它不會降低循環嵌套顯著
  • 這是 - 數字(有點長的故事)問題所以面向內部代碼的OO方法不是最好的 - 最有用的抽象歸結爲無論如何切片
  • 我寧願從切片的R/W視圖(如果它只會是R/O副本我不會抱怨雖然)

編輯:不幸的是我需要存儲陣列內的對象 - 不僅double's。

+0

也許你正在使用錯誤的工具(Java)的工作?或者,將每個維度作爲關鍵工作的地圖? – 2013-02-16 10:55:32

+0

@ drone.ah:這是很長的故事,但基於描述,這也是我想說的。 – 2013-02-16 15:29:53

回答

3

Vectorz是一個矢量/矩陣庫支持切片,並且如果您正在使用double值的數組進行數值處理,那麼這是個不錯的選擇。它專門爲3D建模,獲取,模擬或機器學習環境中的矢量/矩陣數學設計。

優點:

  • 非常快的(一切由原始double S和double[]陣列支持)
  • 100%純Java
  • 支持任意切片和切塊,大多爲O(1)操作(即無數據複製需要)
  • 切片是完全讀/寫啓用的,即您可以使用它們來修改原始結構
  • 您也可以將矢量連接在一起,獲取子矢量視圖等。
  • 數字作品的專用類,例如對角線矩陣等。

它目前支持0,1和2維數組,高維數組已計劃但尚未實現。

+0

+1。看起來不錯,但是我需要一些東西來存儲數組內的對象 - 不僅是'double'(我承認 - 我可能會誤用'數字'內部描述)。 – 2013-02-16 15:32:53