将一个字符串与多个字符串进行比较(最佳数据结构)



我有一个数组,我可以从中获得字符串名称。

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它只会返回一个真布尔值。(这看起来有点脏)

不使用映射到真正的BooleanMap,您可以使用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()"方法,这是你想要的。

最新更新