java - 丑陋的java数据结构

标签 java data-structures

我创建了以下结构,将唯一的 double 值映射到一对或多对整数:

   @SuppressWarnings("boxing")
   private static final HashMap<Double, Integer[][]> rules =
      new HashMap<Double, Integer[][]>() {
         private static final long serialVersionUID = 1L;
         {
            put(-0.6, new Integer[][] { { 1, 3 } });
            put(-0.3, new Integer[][] { { 2, 2 } });
            put(0.0, new Integer[][] { { 2, 4 }, { 3, 3 }, { 4, 2 } });
            put(0.3, new Integer[][] { { 4, 4 } });
            put(0.6, new Integer[][] { { 5, 3 } });
         }
   };

我能否重写它使其更简单 - 即不必处理警告(serialVersionUID、装箱),而且它是如此冗长?

最佳答案

首先应该为整数对使用一个类。或者这是一个巧合,所有数组都包含一堆对?

第二件事是,这些初始化数据可以从配置文件中读取。

编辑: 当我再次查看这段代码时,我意识到将 Doubles 作为 Map 中的键有点冒险。如果作为数学运算的结果生成 double ,则不清楚它们对于计算机是否相等(即使它们在数学意义上相等)。 float 在计算机中表示为近似值。您很可能希望将值与间隔(例如 0.0-0.3)相关联,而不是值本身。如果您始终使用与数组中的键相同的常量,您可能会避免麻烦。但在这种情况下,您也可以使用枚举,如果新程序员使用他计算的 double 值作为映射中的键,则不会遇到麻烦。

关于java - 丑陋的java数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772876/

相关文章:

algorithm - 用大于或等于该节点的节点之和替换BST节点

java - 如何在从 Mongo 读取而不是读取 DBObject 时转换为 Model 对象?

c++ - 在 BST 中查找交换节点

javascript - 如何使用innerHTML将从本地存储检索到的对象传递到DOM中?

java - Eclipse WTP : "The import ___ cannot be resolved for" error in a JSP file for a class defined in project

c# - 提高当前 Linq 查询的时间复杂度

java - 为什么我收到错误?

java - maven:在此行找到多个注释:

java - 刷新媒体扫描仪扫描的文本文件

java - 在Java中迭代字符串矩阵的 "columns and rows"的最佳正确方法是什么?