我正在开发一个医疗应用程序,对于公式中的某些特定字段,我必须根据人的年龄和高度计算最佳结果。最佳值在矩阵中给出,其中索引是高度和年龄(显然),如下所示:
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/