2013-02-16 114 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