丑陋的java数据结构

JRL*_*JRL 3 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 } });
         }
   };
Run Code Online (Sandbox Code Playgroud)

我可以重写这个更简单 - 即不必处理警告(serialVersionUID,拳击),它是如此冗长?

Mne*_*nth 5

使用类对应的整数应该是第一个.或者这是巧合,所有数组都包含一堆对吗?

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

编辑:当我再次查看这段代码时,我意识到双打作为地图中的键有点风险.如果由于数学运算而产生双打,则不清楚它们是否与计算机相等(即使它们在数学意义上相等).浮点数表示为计算机中的近似值.您很可能希望将值与间隔(示例0.0-0.3)相关联,而不是值本身.如果始终使用与数组中的键相同的常量,则可以避免麻烦.但是在这种情况下你也可以使用枚举,如果他使用计算的双精度作为地图中的键,那么没有新的程序员遇到麻烦.