我有一个数组,我可以从中获得字符串名称。
arr[i].getName();
我想要一种方法将它与我目前在Enum中拥有的一些字符串进行比较,如下所示:
public enum BlockManValEnum {
SecurityID("SecurityID"),
BlockStatus("BlockStatus"),
Side("Side"),
GTBookingInst("GTBookingInst");
private String name;
private BlockManValEnum(String name) {
this.name = name;
}
public String toString() {
return this.name;
}
}
我想要一种方法来检查数组中的元素,如果它匹配这些属性之一,然后执行额外的功能,如果它不匹配,不要担心它。我知道枚举是完全错误的存储方式。
然而。我能想到的唯一方法是创建一个带有String键的map它只会返回一个真布尔值。(这看起来有点脏)
不使用映射到真正的Boolean
的Map
,您可以使用Set,并检查您的元素是否在其中。
public enum BlockManValEnum {
SecurityID("SecurityID"),
BlockStatus("BlockStatus"),
Side("Side"),
GTBookingInst("GTBookingInst");
private static Set<String> names = new HashSet<String> {{
for(BlockManValEnum e : BlockManvalEnum.values()) {
add(e.toString());
}
}};
private static boolean contains(String name) {
return names.contains(name);
}
private String name;
private BlockManValEnum(String name) {
this.name = name;
}
public String toString() {
return this.name;
}
}
你可以这样使用:
if (BlockManValEnum.contains(arr[i].getName())) {
// some extra functionality...
}
你很接近…没有值的Map称为Set。使用HashSet。Set有一个"boolean contains()"方法,这是你想要的。