Minecraft Japan Communityを発足しました!

日本向けのMinecraftのコミュニティーサーバーをDiscordにて立ち上げました。
ご参加お待ちしております。

参加はこちらから!

HashMapでValueからKeyを取得する(逆引き)

Spigot ロゴCraftBukkit

MinecraftのCraftBukkit/Spigotプラグインで開発中、Value(値)からKey(キー)を取りたかったのですがjava.util.HashMapにはそんな便利なもの無いんですよね。

突貫工事で取る手法なので本業プログラマさんには叱られそうな内容です。

スポンサーリンク

前提

  • Oracle Java 8(商用でないのでOracle使ってます)
  • java.util.HashMapを基本に実装
    他のライブラリでは簡単に取れるものもあるらしいですが面倒だったので
  • 今回HashMapは両者の値をStringとして扱う(HashMap<String, String>)
スポンサーリンク

実装コード

登録されているkeyをforeachで回して、keyからvalueと取り出す。
引数と照合して合致した時点でkeyを返却します。
今回は何も見つからなかった場合はnullを返します。

/**
 * valueからkeyを取得(逆引き)
 *
 * @param value 値 (String)
 * @return キー (String)
 */
public static String valueToKey(String value) {
    for (String key : map.keySet()) {
        if (map.get(key).equalsIgnoreCase(value)) {
            return key;
        }
    }
    return null;
}
スポンサーリンク

最後に

今回、このデータはせいぜい100件(どれだけ多くても300件)程度の量を想定してこの実装になりました。

せっかくJava 8使っているのだからもっとエレガントに書けるでしょと言われたらヘコみます。
趣味の範囲なのでスルーしてください…。

コメント

タイトルとURLをコピーしました