ホームページ >Java >&#&チュートリアル >HashMap 内の特定の値に関連付けられたキーを見つけるにはどうすればよいですか?

HashMap 内の特定の値に関連付けられたキーを見つけるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-18 22:38:11958ブラウズ

How to Find Keys Associated with Specific Values in a HashMap?

HashMap の値に関連付けられたキーの検索

ハッシュマップを使用する場合、多くの場合、特定の値に基づいてキーを取得する必要があります。 Java でこのタスクを実行するには、いくつかの方法があります。

1 つのオプションは、HashMap のentrySet() を反復処理し、各エントリの値を目的の値と比較することです。

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    Set<T> keys = new HashSet<>();
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            keys.add(entry.getKey());
        }
    }
    return keys;
}

キーと値の間の 1 対 1 の関係では、最初に一致するキーを取得できます:

public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
    for (Entry<T, E> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            return entry.getKey();
        }
    }
    return null;
}

Java 8 では、ストリームを活用してコードをより簡潔にすることもできます。

public static <T, E> Set<T> getKeysByValue(Map<T, E> map, E value) {
    return map.entrySet()
              .stream()
              .filter(entry -> Objects.equals(entry.getValue(), value))
              .map(Map.Entry::getKey)
              .collect(Collectors.toSet());
}

また、双方向マッピングの場合、Guava ライブラリはキーと値の直接ルックアップを提供する BiMap を提供し、その逆も可能です。例:

BiMap<Token, Character> tokenToChar = 
    ImmutableBiMap.of(Token.LEFT_BRACKET, '[', Token.LEFT_PARENTHESIS, '(');
Token token = tokenToChar.inverse().get('(');
Character c = tokenToChar.get(token);

以上がHashMap 内の特定の値に関連付けられたキーを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。