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

时间:2011-08-30 14:38:38

标签: java data-structures

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

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

3 个答案:

答案 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()”方法,这就是你想要的。