存储多个向量

时间:2016-09-30 12:52:35

标签: java vector data-structures

我有大约1,700个矢量形式:

a*x + b*y + c*z

我需要将它存储在Java中的内存结构中。到目前为止,我的想法是存储数据:

  • 内部二维数组
  • 包含3个值数组的内部列表

这里的最佳举措是什么?

1 个答案:

答案 0 :(得分:2)

最好的选择是你能证明最好的选择。这意味着在处理这些问题时,您应该分析不同的解决方案,看看哪种解决方案在数据利用模式方面更好。

我看到了多种不同的选择:

  • 有一个班级Coefficient { double a, b, c; }
  • 使用List<double[]>
  • 使用double[][]

可能最糟糕的选择是将它们包装到Double个对象中,因为它会在任何地方放置很多开销。

我的猜测是double[][]应该稍微提高效率,因为JVM具有管理array的本机指令,但您不会从其他方面获得相同的性能优势语言,因为Java中的二维数组仍然是一个数组数组,所以它在内存中不连续。

对于读取或更新值,可能List<double[]>double[][]的行为方式非常相似,但如果您有大量插入或删除操作可能会发生变化(假设您调整列表大小以便更正)添加元素前的大小)。

最后只需对代码进行概要分析并检查结果。