簡體   English   中英

用int映射枚舉的最佳方法

[英]Best way for mapping enum with int

我有一個兩難選擇,那就更好了-如果我將其設置為實體地圖的字段:

@ManyToMany
Map<SomeEnum, Integer> field;

或列出並創建其他類以使用int映射枚舉:

@ManyToOne
List<WrapperClass> field;

和包裝類:

@Entity
class WrapperClass {

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

  public int value;
}

我不確定我的答案是否會真正有用,因為我認為,您所需的數據結構的選擇實際上取決於您要使用信息的目的。 但是,由於您還沒有提供這些信息,因此我會推斷一些事情(可能不正確...)。 如果您提供更多信息,我將更新我的答案。

由於您似乎想從一個enum到一個int進行映射,因此將使用第一個更自然的數據結構,即

Map<SomeEnum, Integer> field;

僅僅是因為這很好地定義了一個映射。 您會獲得更好的查找時間和一個數據結構,該數據結構用於將鍵(在本例中為SomeEnum )鏈接到值( Integer )。

對於ListSet ,您正在使用的數據結構自然不適合查找SomeEnum的某些實例映射到的值。 您必須為WrapperClass編寫自己的ComparatorcompareTo ,並編寫更多代碼(如果您使用Map<SomeEnum, Integer> field ,這些代碼已經為您Map<SomeEnum, Integer> field

...除非出於某些特殊原因,您需要采用其他方式對此進行編碼? 某些限制使您無法使用這種方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM