如何将哈希映射转换为在java中具有键和值的枚举pojo

时间:2016-06-27 11:49:10

标签: java dictionary enums

我有一个哈希映射,其值如下: 地图{键:1,值:男, 重点:2,值:女, 关键:3,价值:未知, 键:4,值:OTHER }

我想将此地图转换为enum pojo文件,如下所示:

 public enum Gender {
   MALE(1), FEMALE(2), UNKNOWN(3), Other(4);
   private int val;

   Gender (int val)
   {
        this.val = val;
   }
   public int getVal(){
   return this.val;
   }

   }; 

   public Gender getValue(){
   return value;
   }

   public void setValue(Gender value){
   this.value = value;
    }
   public TestEnumPrac(Gender value)
   {
     this.value = value;

   }

我尝试了一些方法,但没有达到我想要的效果。 任何人都可以建议如何实现这一目标,解决这个问题的最佳方法是什么。

2 个答案:

答案 0 :(得分:0)

你非常接近,但可能过于复杂或误解了一些概念:

  • 代码};
  • 错误
  • 重复的方法(getValgetValue
  • 错位和构造函数public TestEnumPrac(Gender value)

CORRECT ENUM

public enum GENDER {
    MALE(1), FEMALE(2), UNKNOWN(3), OTHER(4);

    private int val;

    GENDER(int val) {
        this.val = val;
    }

    public int getVal() {
        return val;
    }

    public void setVal(int val) {
        this.val = val;
    }

}

<强> TEST:

public static void main(String[] args) {
    for (GENDER G : GENDER.values()) {
        System.out.println(G.name() + " = " + G.getVal());
        G.setVal(2 * G.getVal());
        System.out.println("MODIFIED" + G.name() + " = " + G.getVal());
    }
}

<强>结果:

MALE = 1
MODIFIED MALE = 2
FEMALE = 2
MODIFIED FEMALE = 4
UNKNOWN = 3
MODIFIED UNKNOWN = 6
OTHER = 4
MODIFIED OTHER = 8

答案 1 :(得分:0)

以Jordi的代码为起点,添加此方法以从整数映射到GENDER个对象。

public static GENDER fromInt(int value) {
    for (gender GENDER : GENDER.values()) {
         if (gender.getVal() == value) {
             return gender;
         }
    }
    throw new IllegalArgumentException("Unmappable value (" + value + ")");
}

请注意,更有效的方法是创建并填充HashMap<Integer, Gender>并使用它来进行映射。或者甚至只是一个简单的GENDER对象数组。但是,如果有setVal方法可以更改val对象的GENDER属性,则这些方法无法正常工作。

提示:摆脱setVal。它不太可能有用,而且可能很危险。