Java 使用int映射枚举的最佳方法
我有点进退两难,如果我将实体图的字段设置为:Java 使用int映射枚举的最佳方法,java,playframework,persistence,Java,Playframework,Persistence,我有点进退两难,如果我将实体图的字段设置为: @ManyToMany Map<SomeEnum, Integer> field; 我不确定我的回答是否真的有用,因为在我看来,您所需要的数据结构的选择实际上取决于您将使用信息做什么。但是,由于您没有提供,我将推断出一些情况(可能是错误的…)。如果你提供更多信息,我会更新我的答案 由于您似乎希望从enum映射到int,因此首先要使用更自然的数据结构,即 Map<SomeEnum, Integer> field; Map字段
@ManyToMany
Map<SomeEnum, Integer> field;
我不确定我的回答是否真的有用,因为在我看来,您所需要的数据结构的选择实际上取决于您将使用信息做什么。但是,由于您没有提供,我将推断出一些情况(可能是错误的…)。如果你提供更多信息,我会更新我的答案 由于您似乎希望从
enum
映射到int
,因此首先要使用更自然的数据结构,即
Map<SomeEnum, Integer> field;
Map字段;
因为这很好地定义了映射。您将获得更好的查找时间和数据结构,用于将键(在本例中为SomeEnum
)链接到值(整数)
对于列表
或集合
,您使用的数据结构自然不适合查找SomeEnum的某个实例映射到的值。您必须为您的包装类编写自己的比较器
或比较器
,并编写更多的代码,如果您使用映射字段
,这些代码将已经为您的
…除非有特定的原因,你需要一种不同的编码方式?一些限制因素阻止了您使用这种方法?您使用这种映射的目的是什么?枚举类型实例有一个ordinal()
方法来获取它的int值,该值在同一个枚举类型中是唯一的。即使您需要为枚举指定一个特定的值(而不是ordinal!),对我来说,最简单的解决方案似乎是在枚举中添加一个整数字段<代码>枚举测试{int-val;FOO(5),BAR(10);公共测试(int-val){this.val=val}}
@Entity
class WrapperClass {
@Basic(optional=false)
@Enumerated(EnumType.STRING)
public SomeEnum someEnum;
public int value;
}
Map<SomeEnum, Integer> field;