java - 存储矩阵值以供以后访问的更好方法

标签 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>>();

第一个索引是年龄,第二个索引是高度。

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

有没有更好的方法?

最佳答案

简短回答:

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

  • 严格:高度介于 140 到 200 之间,按 5 个单位间隔划分。
  • 宽松:您可能需要输入 136 的高度。

如果是严格的,只要您遵守规则,简单的 float[][] 就可以了。 如果不严格,您需要一张 map 来提高灵 active 。

严格的结构还意味着更改数据将更加困难。 该 map 允许您不受限制地输入任何您想要的数据,但也有缺点。

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

  • 您的表格是否是一个包含每个单元格值的二维表格?
  • 它会是稀疏数组还是锯齿状数组?

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

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

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

关于java - 存储矩阵值以供以后访问的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380453/

相关文章:

javascript - 将 JavaScript 存储在数据库中供以后使用

python - 打印机模拟python程序中waittime是怎么计算的?

matrix - Julia如何从范围内快速按行生成矩阵

java - 为什么集合会返回无序值,即使它在内部实现了 HashMap?

java - Selenium webdriver - 根据表值单击复选框

java - 什么-XX :-PrintGC and XX:-PrintGCDetails flags do?

java - JAXB 的动态标签名称

c++ - 在整数输入流中遇到的先前较小元素的计数?

python - 知道前两列的值后,如何从第三列中获取值

python - 正确追加范围 python