1. ホーム

[解決済み】Java: enumが与えられた文字列を含むかどうかをチェックしますか?

2022-04-08 20:28:17

質問

私の問題は、次のような enum に相当するものを探していることです(存在するのであれば)。 ArrayList.contains(); .

以下は、私のコードの問題のサンプルです。

enum choices {a1, a2, b1, b2};

if(choices.???(a1)}{
//do this
} 

今、私は ArrayListStrings の方が良いのですが、enumの内容を別の場所でswitch/caseに通す必要があります。それが私の問題です。

このようなものが存在しないとして、どのようにすればいいのでしょうか?

どのように解決するのですか?

これで大丈夫です。

public static boolean contains(String test) {

    for (Choice c : Choice.values()) {
        if (c.name().equals(test)) {
            return true;
        }
    }

    return false;
}

この方法だと、後からenumの値を追加する心配がなく、すべてチェックされていることになります。

編集する enumが非常に大きい場合、HashSetに値を格納することができます。

public static HashSet<String> getEnums() {

  HashSet<String> values = new HashSet<String>();

  for (Choice c : Choice.values()) {
      values.add(c.name());
  }

  return values;
}

なら、そうすればいいんです。 values.contains("your string") で、trueかfalseを返します。