3

是否有支持切片的 Java 数组库?我只需要常规的 nx n' x n'' x ...数组,并从给定维度或整个维度取一个切片(即不需要范围)。

注释(阅读对潜在评论的回复):

  • 我知道常规的 Java 数组不支持它,我也不愿意编写自己的切片库。
  • 使用Collection(建议在对其他问题的评论中)转移问题
  • 使用System.arraycopy对高维没有帮助,因为它不会显着降低循环的嵌套
  • 这是(有点长篇大论)数值问题,因此内部代码的 OO 方法不一定是最好的方法——无论如何,最有用的抽象归结为切片
  • 我更喜欢切片的 R/W 视图(如果它只是 R/O 副本,我不会抱怨)

编辑:不幸的是,我需要将对象存储在数组中 - 不仅是double's.

4

1 回答 1

5

Vectorz是一个支持切片的向量/矩阵库,如果您正在处理值数组的数值工作,它是一个不错的选择double。它专为 3D 建模、增益、模拟或机器学习环境中的矢量/矩阵数学而设计。

优点:

  • 非常快(由原始doubles 和double[]数组支持的一切)
  • 100% 纯 Java
  • 支持任意切片和切块,主要作为O(1)操作(即不需要数据复制)
  • 切片完全支持读/写,即您可以使用它们来修改原始结构
  • 您还可以将向量连接在一起,获取子向量视图等。
  • 数值工作的专门课程,例如对角矩阵等。

它目前支持 0、1 和 2 维数组,更高维数组已计划但尚未实现。

于 2013-02-16T12:09:48.953 回答