存储矩阵值以便以后访问的更好方法

时间:2014-01-27 12:05:52

标签: java data-structures matrix static

我正在开发一个医疗应用程序,对于某些特定领域的公式,我必须根据人的年龄和身高来计算最佳结果。最佳值以矩阵形式给出,其中索引是高度和年龄(显然),如下所示:

    Height 135 140 and so on...
Age     
5          1.5 1.6
10         1.6 1.8
15         1.7 1.8
and so on...

我无法将值存储在数据库中,因此我想知道存储此值的更有效方法是什么。

我首先想到的是使用它:

private static Map<Integer, HashMap<Integer, Float>> optimalValues = new HashMap<Integer, HashMap<Integer, Float>>();

是年龄的第一个指标,第二个是身高。

数据验证是通过静态类进行的,矩阵将构建在静态初始化代码段中。

有没有更好的方法?

1 个答案:

答案 0 :(得分:1)

简答:

主要问题是您的数据是否遵循严格的结构。

  • 严格:身高在140到200之间,分为5个单位间隔。
  • Lax:你可能需要输入136的高度。

如果严格,只要您遵守规则,float[][]就可以了。 如果它不严格,则需要map才能获得灵活性。

严格的结构也意味着,对您的数据进行更改将更加困难。 地图允许您无限制地输入您想要的任何数据,但有利弊。

更长的答案: 这实际上取决于您的要求。

  • 您的表格是否恰好是一个包含每个单元格值的2D表格?
  • 它是稀疏的还是锯齿状的阵列?

如果所有行的单元格数完全相同,并且您不打算进行任何重大更改,则简单的float [] [] 2D数组在所有方面都更有效:

  • 通过数据更快
  • 它使用的内存略少
  • 您不需要使用对象,引用和装箱/拆箱
  • 内存分配是连续的。

如果另一方面,您可能会突然决定要为136添加高度,那么地图更合适,因为您可以动态输入所需的任何新数据。