【问题标题】:Better way to store matrix values for later access存储矩阵值以供以后访问的更好方法
【发布时间】:2014-01-27 12:05:52
【问题描述】:

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

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

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

数据的验证是通过一个静态类来进行的,矩阵会建立在一段静态的初始化代码中。

有没有更好的方法?

【问题讨论】:

  • 这取决于您将如何处理这些数据以及它有多大。你可以使用二维数组吗?漂浮[][]?。然后您可以添加一些其他私有和静态方法来根据年龄,身高输入计算数组索引
  • 这将是一个 16x13 矩阵,我只需在验证公式时检查该人的值。

标签: java data-structures matrix static


【解决方案1】:

简答:

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

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

如果严格,只要您遵守规则,只需 float[][] 即可。 如果它很松散,您需要map 以获得灵活性。

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

更长的答案: 这真的取决于你有什么要求。

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

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

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

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

【讨论】:

  • 好吧,二维数组永远不会改变......所以我猜 float[][] 更好。
猜你喜欢
  • 2017-03-04
  • 2020-09-21
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多