使用int映射枚举的最佳方法

时间:2012-01-23 01:17:46

标签: java playframework persistence

我有一点困境,如果我设置为实体地图的字段,那会更好:

@ManyToMany
Map<SomeEnum, Integer> field;

或List并创建用于使用int:

映射枚举的附加类
@ManyToOne
List<WrapperClass> field;

和包装类:

@Entity
class WrapperClass {

  @Basic(optional=false)
  @Enumerated(EnumType.STRING)
  public SomeEnum someEnum;

  public int value;
}

1 个答案:

答案 0 :(得分:1)

我不确定我的回答是否真的非常有用,因为在我看来,您需要的数据结构的选择实际上取决于您将使用哪些信息对于。但是,既然你没有提供,我会推断一些事情(可能是错误的......)。如果您提供更多信息,我会更新我的答案。

由于您似乎想要从enumint进行映射,因此使用的自然数据结构将是第一个,即

Map<SomeEnum, Integer> field;

只是因为它很好地定义了一个映射。您将获得更好的查找时间和数据结构,该结构旨在将密钥(在本例中为SomeEnum)与值(Integer)相关联。

使用ListSet时,您使用的数据结构自然不适合查找SomeEnum的某个实例映射到的值。您必须为自己的Comparator编写自己的compareToWrapperClass,并编写更多代码,如果您使用的是Map<SomeEnum, Integer> field,则需要为此处理。

...除非有一些特定的原因,为什么你需要一种不同的编码方式?一些限制阻止你使用这种方法?