我有一个这样的枚举:

public enum Lang {
    TR("tr"),
    EN("en"),
    SE("se");

 private String langName;

 private Lang(String langName) {
        this.langName = langName;
    }
}


在另一个类中,我想检查langName是否存在。如果使用getter方法,则可以遍历langNames:

for (Lang langEnum : Lang.values()) {
        langEnum.getLangName();
}


但是,我的枚举可能太长,我不想遍历数组。我想使用地图或集合。另一方面,我不想在枚举中使用另一个变量。

如何检查我的枚举是否具有langName?

最佳答案

好吧,如果每个枚举常量都代表一种语言(如代码所示),那么我将使用EnumSet。

Set<Lang> langs = EnumSet.allOf(Lang.class);


然后我可以检查一种语言是否已经存在。喜欢

if(langs.contains(Lang.EN) {
  //...
}


不确定这是否是您要找的答案。 EnumSet的contains方法甚至不会迭代内部集合。内部集合将存储在数组中,并基于哈希计算查找元素。因此,实际上,这应该达到您在问题中所要求的。

10-07 18:29