我有一个数组,我可以从中获取字符串名称。
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键的映射,它只返回一个真正的布尔值。 (这看起来有点脏)
答案 0 :(得分:3)
您可以使用Set,而不是使用映射到真Map
的{{1}},并检查您的元素是否在其中。 [并激活功能,如果是]
答案 1 :(得分:2)
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...
}
答案 2 :(得分:1)
你很接近......没有值的地图称为集合。使用HashSet。 Set有一个“boolean contains()”方法,这就是你想要的。