我有一点困境,如果我设置为实体地图的字段,那会更好:
@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;
}
答案 0 :(得分:1)
我不确定我的回答是否真的非常有用,因为在我看来,您需要的数据结构的选择实际上取决于您将使用哪些信息对于。但是,既然你没有提供,我会推断一些事情(可能是错误的......)。如果您提供更多信息,我会更新我的答案。
由于您似乎想要从enum
到int
进行映射,因此使用的自然数据结构将是第一个,即
Map<SomeEnum, Integer> field;
只是因为它很好地定义了一个映射。您将获得更好的查找时间和数据结构,该结构旨在将密钥(在本例中为SomeEnum
)与值(Integer
)相关联。
使用List
或Set
时,您使用的数据结构自然不适合查找SomeEnum
的某个实例映射到的值。您必须为自己的Comparator
编写自己的compareTo
或WrapperClass
,并编写更多代码,如果您使用的是Map<SomeEnum, Integer> field
,则需要为此处理。
...除非有一些特定的原因,为什么你需要一种不同的编码方式?一些限制阻止你使用这种方法?